home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / program / inter52a.zip / INTERRUP.B < prev    next >
Text File  |  1996-10-20  |  355KB  |  9,612 lines

  1. Interrupt List, part 2 of 15
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996 Ralf Brown
  3. --------B-1318-------------------------------
  4. INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
  5.     AH = 18h
  6.     DL = drive number
  7.     CH = lower 8 bits of highest cylinder number (number of cylinders - 1)
  8.     CL = sectors per track (bits 0-5)
  9.          top 2 bits of highest cylinder number (bits 6,7)
  10. Return: AH = status
  11.         00h requested combination supported
  12.         01h function not available
  13.         0Ch not supported or drive type unknown
  14.         80h there is no disk in the drive
  15.     ES:DI -> 11-byte parameter table (see #0671 at INT 1E)
  16. Note:    this function does not set the INT 1E vector to point at the returned
  17.       parameter table; it is the caller's responsibility to do so
  18. SeeAlso: AH=05h,AH=07h,AH=17h,INT 1E
  19. --------d-1318-------------------------------
  20. INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
  21.     AH = 18h
  22.     DL = hard drive ID
  23. Return: CF set on error
  24.         AH = status code (see #0144 at AH=01h)
  25.     CF clear if successful
  26.         AX = 4321h (magic number)
  27.         CX = controller family code (see #0159)
  28.         ---if family code=0200h
  29.         DH = number of exclusively ROM-controlled SCSI devices
  30.         DL = canonical SCSI device number for specified drive
  31.         ---if family code <> 0200h
  32.         BH = number of exclusively ROM-controlled SCSI devices
  33.         BL = canonical SCSI device number for specified drive
  34. Notes:    also sets an internal flag (non-resettable) which prevents some
  35.       controller messages from being displayed, allows writes to
  36.       removable devices (use caution!), and enables the INT 13 interface
  37.       for more than one drive (i.e. DL >= 81h) in at least some ROM
  38.       versions
  39.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  40.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  41. SeeAlso: AH=05h"SCSI",AX=1700h"SCSI",AH=1Bh"SCSI",INT 4F/AX=8100h
  42.  
  43. (Table 0159)
  44. Values for Future Domain SCSI controller family code:
  45.  0200h    TMC-1680/? (ROM 3.0)
  46.  0203h    TMC-1650/1660/1670/1680 (ROM 2.0)
  47.  040Ah    TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A)
  48.  050Dh    TMC-840/841/880/881 (ROM 5.2D)
  49.  0700h    TMC-830/850/860/875/885 (ROM 7.0)
  50. --------d-1318--CXD2C9-----------------------
  51. INT 13 - XDF.COM - API
  52.     AH = 18h
  53.     CX = D2C9h ("R"+80h, "I"+80h = Roger Ivey)
  54.     DX = 0000h
  55.     BX = function
  56.         0000h installation check
  57.           Return: AH = 0Ch
  58.               CX = 7269h ("ri" = Roger Ivey)
  59.               ES = segment of driver
  60.               CF set
  61.         2F64h ("/d") disable the driver
  62.           Return: AH = 0Ch
  63.               ES:BX = pointer to activation flag (it is set to 0:
  64.                   set it to 1 to enable the driver again)
  65.               CX = 7269h
  66.               CF set
  67.         2F75h ("/u") unload the driver (restore interrupts & free memory)
  68.           Return: AH = 0Ch
  69.               DL = 55h ("U") if successful
  70.                  = 00h       if fails
  71.               CX = 7269h
  72.               ES = segment of driver
  73.               CF set
  74.               AL, BX, DH, and DI destroyed
  75. Program: XDF is a TSR provided with PC-DOS 7.0 to support XDF 1.84M disks,
  76.       developed by Roger D. Ivey
  77. Note:    After disabling or enabling the driver, a disk change must be performed
  78.       or simulated to reset the driver.
  79. --------B-1319-------------------------------
  80. INT 13 - FIXED DISK - PARK HEADS ON ESDI DRIVE (XT286,PS)
  81.     AH = 19h
  82.     DL = drive
  83. Return: CF set on error
  84.     CF clear if successful
  85.     AH = status (see #0144 at AH=01h)
  86. SeeAlso: AH=11h
  87. --------d-1319-------------------------------
  88. INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
  89.     AH = 19h
  90.     DL = hard drive ID
  91. Return: CF set on error
  92.         AH = status code (see #0144 at AH=01h)
  93.     CF clear if successful
  94.         AH = disk type (03h = fixed disk)
  95.         CX:DX = number of 512-byte sectors
  96. Notes:    sends SCSI Read Capacity command to get number of logical blocks and
  97.       adjusts the result for 512-byte sectors
  98.     displays either "Error in Read Capacity Command" or "nnn Bytes per
  99.       sector" (nnn=256 or 512, the only sizes supported in the translation
  100.       code)
  101.     should probably be called when a removable device has its media changed
  102.     returns the same values as AH=15h
  103.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  104.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  105. SeeAlso: AH=15h,AH=1Ah,INT 4F/AX=8100h
  106. --------d-131A-------------------------------
  107. INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
  108.     AH = 1Ah
  109.     AL = defect table entry count
  110.     CL = format modifiers (see #0160)
  111.     DL = drive (80h,81h)
  112.     ES:BX -> defect table (see #0161), ignored if AL=00h
  113. Return: CF set on error
  114.     CF clear if successful
  115.     AH = status (see #0144 at AH=01h)
  116. Note:    if periodic interrupt selected, INT 15/AH=0Fh is called after each
  117.       cylinder is formatted
  118. SeeAlso: AH=07h,INT 15/AH=0Fh
  119.  
  120. Bitfields for ESDI format modifiers:
  121. Bit(s)    Description    (Table 0160)
  122.  4    generate periodic interrupt
  123.  3    perform surface analysis
  124.  2    update secondary defect map
  125.  1    ignore secondary defect map
  126.  0    ignore primary defect map
  127.  
  128. Format of defect table entry [array]:
  129. Offset    Size    Description    (Table 0161)
  130.  00h  3 BYTEs    relative sector address (little-endian)
  131.  03h    BYTE    flags and defect count
  132.         bit 7: last logical sector on track
  133.         bit 6: first logical sector on track
  134.         bit 5: last logical sector on cylinder
  135.         bit 4: logical sectors are pushed onto next track
  136.         bits 3-0: number of defects pushed from previous cylinder
  137. --------d-131A-------------------------------
  138. INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
  139.     AH = 1Ah
  140.     CH = track (bits 8,9 in high bits of CL)
  141.     CL = sector (01h to number of sectors/track for drive)
  142.     DH = head
  143.     DL = hard drive ID
  144. Return: CF set on error
  145.     AH = status code (see #0144 at AH=01h)
  146.     CX:DX = logical block number of last quickly-accessible block after
  147.         given block
  148. Notes:    sends SCSI Read Capacity command with the PMI bit set to obtain the
  149.       logical block address of the last block after which a substantial
  150.       delay in data transfer will be encountered (usually the last block
  151.       on the current cylinder).  No translation to 512 byte sectors is
  152.       performed on the result if data is stored on the disk in other than
  153.       512 byte sectors.
  154.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  155.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  156. SeeAlso: AH=15h,AH=19h"SCSI"
  157. --------d-131B-------------------------------
  158. INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
  159.     AH = 1Bh
  160.     AL = number of sectors to read
  161.     DL = drive
  162.     ES:BX -> buffer for manufacturing header (defect list)
  163. Return: CF set on error
  164.     CF clear if successful
  165.     AH = status
  166. Note:    manufacturing header format (Defect Map Record format) can be found
  167.       in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
  168.     the first sector read contains the manufacturing header with the number
  169.       of defect entries and the beginning of the defect map; the remaining
  170.       sectors contain the remainder of the defect map
  171. --------d-131B-------------------------------
  172. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
  173.     AH = 1Bh
  174.     DL = hard drive ID
  175. Return: CF set on error
  176.         AH = status code (see #0144 at AH=01h)
  177.     CF clear if successful
  178.         ES:BX -> SCSI disk information block (see #0162)
  179. Notes:    also sets a non-resettable flag which prevents some controller messages
  180.       from being displayed
  181.     the TMC-950 does not support any Future Domain BIOS calls; instead,
  182.       it provides a full CAM implementation (see INT 4F/AX=8100h)
  183. SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI"
  184.  
  185. Format of Future Domain SCSI disk information block:
  186. Offset    Size    Description    (Table 0162)
  187.  00h    BYTE    drive physical information (see #0163)
  188.  01h    WORD    translated number of cylinders
  189.  03h    BYTE    translated number of heads
  190.  04h    BYTE    translated number of sectors per track (17, 34, or 63)
  191.  05h    BYTE    drive address
  192.         bits 0-2: logical unit number
  193.         bits 3-5: device number
  194.  06h    BYTE    01h at initialization
  195.  07h    BYTE    sense code byte 00h, or extended sense code byte 0Ch
  196.  08h    BYTE    00h
  197.  09h    BYTE    00h or extended sense code byte 02h (sense key)
  198.  0Ah    BYTE    00h
  199.  0Bh 10 BYTEs    copy of Command Descriptor Block (CDB)
  200.  15h    DWORD    translated number of sectors on device
  201.  
  202. Bitfields for Future Domain SCSI device physical information:
  203. Bit(s)    Description    (Table 0163)
  204.  0    ???
  205.  1    device uses parity
  206.  2    256 bytes per sector instead of 512
  207.  3    don't have capacity yet???
  208.  4    disk is removable
  209.  5    logical unit number is not present
  210. --------d-131C-------------------------------
  211. INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
  212.     AH = 1Ch
  213.     DL = hard drive ID (any valid SCSI hard disk)
  214. Return: CF set on error
  215.         AH = status code (see #0144 at AH=01h)
  216.     CF clear if successful
  217.         ES:BX -> first byte of free RAM on controller
  218. Notes:    the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
  219.       to 1BFFh on-board the controller for storing drive information and
  220.       controller status; ES:BX points to the first byte available for other
  221.       uses
  222.     ES contains the segment at which the controller resides; the
  223.       controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
  224. SeeAlso: AH=1Bh"SCSI"
  225. --------d-131C-------------------------------
  226. INT 13 U - ESDI FIXED DISK - ???
  227.     AH = 1Ch
  228.     AL = subfunction (01h-06h)
  229.     DL = drive (80h,81h)
  230.     ???
  231. Return: ???
  232. Note:    these functions perform a controller command 0612h without DMA
  233. --------d-131C08-----------------------------
  234. INT 13 U - ESDI FIXED DISK - GET COMMAND COMPLETION STATUS
  235.     AX = 1C08h
  236.     DL = drive (80h,81h)
  237.     ES:BX -> buffer for Command Complete Status Block (see #0164)
  238. Return: CF set on error
  239.     CF clear if successful
  240.     AH = status (see #0144 at AH=01h)
  241. SeeAlso: AX=1C09h,AX=1C0Ah
  242.  
  243. Format of ESDI Command Complete Status Block:
  244. Offset    Size    Description    (Table 0164)
  245.  00h    BYTE    07h
  246.  01h    BYTE    size of block in words (07h)
  247.  02h    BYTE    command error code (see #0165)
  248.  03h    BYTE    command status code (see #0166)
  249.  04h    BYTE    device error code, group 1 (see #0167)
  250.  05h    BYTE    device error flags, group 2 (see #0168)
  251.  06h    WORD    number of unprocessed sectors due to abnormal termination
  252.  08h    DWORD    last Relative Sector Address processed by command
  253.  0Ch    WORD    number of sectors corrected by ECC codes
  254.  
  255. (Table 0165)
  256. Values for ESDI command error code:
  257.  00h    successful
  258.  01h    parameter invalid
  259.  02h    unknown function
  260.  03h    unsupported command
  261.  04h    command cancelled
  262.  05h    unknown function
  263.  06h    controller diagnostics failed
  264.  07h    formatting failed
  265.  08h    format error in primary map
  266.  09h    format error in secondary map
  267.  0Ah    diagnostic failure during formatting
  268.  0Bh    warning: secondary map too large during formatting
  269.  0Ch    warning: non-zero defect
  270.  0Dh    system checksum error during formatting
  271.  0Eh    warning: incompatible device
  272.  0Fh    warning: push table overflowed
  273.  10h    warning: more than 15 sectors pushed to next cylinder
  274.  11h    internal hardware error
  275.  12h    warning: errors found while verifying sectors
  276.  13h    invalid device
  277.  FFh    device error
  278.  
  279. (Table 0166)
  280. Values for ESDI command status code:
  281.  01h    successful
  282.  03h    successful after ECC
  283.  05h    successful after retries
  284.  06h    format partially completed
  285.  07h    successful after ECC and retries
  286.  08h    command completed with warning (see #0165)
  287.  09h    abort complete
  288.  0Ah    reset complete
  289.  0Bh    data transfer ready (no status block)
  290.  0Ch    command completed with failure (see #0167,#0168)
  291.  0Dh    DMA error
  292.  0Eh    command block error (see #0165)
  293.  0Fh    bad attention code
  294. SeeAlso: #0167
  295.  
  296. (Table 0167)
  297. Values for ESDI device error code, group 1:
  298.  00h    successful
  299.  01h    seek fault detected by device
  300.  02h    interface fault
  301.  03h    sector ID not found
  302.  04h    disk not formatted
  303.  05h    unrecoverable ECC error
  304.  06h    ECC error in sector ID
  305.  07h    invalid relative sector address
  306.  08h    timeout
  307.  09h    sector defective
  308.  0Ah    disk changed (removable media)
  309.  0Bh    selection error
  310.  0Ch    write protected (removable media)
  311.  0Dh    write fault
  312.  0Eh    read fault
  313.  0Fh    no index or sector pulse
  314.  10h    device not ready
  315.  11h    seek error detected by adapter
  316.  12h    bad format
  317.  13h    volume overflow
  318.  14h    data address mark not found
  319.  15h    sector ID not found
  320.  16h    missing device configuration data
  321.  17h    first/last relative sector flags missing
  322.  18h    track empty
  323.  81h    timeout while waiting for stop
  324.  82h    timeout while waiting for end of data transfer
  325.  84h    stopped awaiting data transfer during formatting
  326.  85h    timeout while waiting for head switch
  327.  86h    timeout while awaiting DMA completion
  328. SeeAlso: #0166,#0168
  329.  
  330. Bitfields for ESDI device error flags, group 2:
  331. Bit(s)    Description    (Table 0168)
  332.  7-5    unused
  333.  4    ready
  334.  3    selected
  335.  2    write fault
  336.  1    on track 0
  337.  0    seek/command complete
  338. SeeAlso: #0167
  339. --------d-131C09-----------------------------
  340. INT 13 U - ESDI FIXED DISK - GET DEVICE STATUS
  341.     AX = 1C09h
  342.     DL = drive (80h,81h)
  343.     ES:BX -> buffer for Device Status Block (see #0169)
  344. Return: CF set on error
  345.     CF clear if successful
  346.     AH = status (see #0144 at AH=01h)
  347. SeeAlso: AX=1C08h,AX=1C0Ah
  348.  
  349. Format of ESDI Device Status Block:
  350. Offset    Size    Description    (Table 0169)
  351.  00h    BYTE    08h
  352.  01h    BYTE    number of words in block (09h)
  353.  02h    BYTE    error flags
  354.  03h    BYTE    unused
  355.  04h    BYTE    command error code (see #0165)
  356.  05h    BYTE    command status code (see #0166)
  357.  06h    WORD    ESDI standard status
  358.  08h  5 WORDs    ESDI vendor-specific status codes
  359. --------d-131C0A-----------------------------
  360. INT 13 U - ESDI FIXED DISK - GET DEVICE CONFIGURATION
  361.     AX = 1C0Ah
  362.     DL = drive (80h,81h)
  363.     ES:BX -> buffer for Drive Configuration Status Block (see #0170)
  364. Return: CF set on error
  365.     CF clear if successful
  366.     AH = status (see #0144 at AH=01h)
  367. Note:    device configuration format can be found in IBM ESDI Fixed Disk Drive
  368.       Adapter/A Technical Reference
  369. SeeAlso: AX=1C08h,AX=1C0Bh,AX=1C0Ch
  370.  
  371. Format of ESDI Drive Configuration Status Block:
  372. Offset    Size    Description    (Table 0170)
  373.  00h    BYTE    09h
  374.  01h    BYTE    number of words in block (06h)
  375.  02h    BYTE    flags
  376.  03h    BYTE    number of spare sectors per cylinder
  377.  04h    DWORD    total number of usable sectors
  378.  08h    WORD    total number of cylinders
  379.  0Ah    BYTE    tracks per cylinder
  380.  0Bh    BYTE    sectors per track
  381. --------d-131C0B-----------------------------
  382. INT 13 U - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
  383.     AX = 1C0Bh
  384.     ES:BX -> buffer for Controller Configuration Status Block (see #0171)
  385. Return: CF set on error
  386.     CF clear if successful
  387.     AH = status (see #0144 at AH=01h)
  388. SeeAlso: AX=1C0Ch
  389.  
  390. Format of ESDI Controller Configuration Status Block:
  391. Offset    Size    Description    (Table 0171)
  392.  00h    BYTE    E9h
  393.  01h    BYTE    number of words in block (06h)
  394.  02h    WORD    unused (0000h)
  395.  04h    DWORD    controller microcode revision level
  396.  08h  2 WORDs    unused (0000h)
  397. --------d-131C0C-----------------------------
  398. INT 13 U - ESDI FIXED DISK - GET POS INFORMATION
  399.     AX = 1C0Ch
  400.     ES:BX -> buffer for POS Information Status Block (see #0172)
  401. Return: CF set on error
  402.     CF clear if successful
  403.     AH = status (see #0144 at AH=01h)
  404. SeeAlso: AX=1C0Bh
  405.  
  406. Format of ESDI POS Information Status Block:
  407. Offset    Size    Description    (Table 0172)
  408.  00h    BYTE    EAh
  409.  01h    BYTE    number of words in block (05h)
  410.  02h    WORD    magic value FFDDh
  411.  04h    BYTE    POS register 3
  412.  05h    BYTE    POS register 2
  413.  06h    BYTE    POS register 5 (unused, FFh)
  414.  07h    BYTE    POS register 4 (unused, FFh)
  415.  08h    BYTE    POS register 7 (unused, FFh)
  416.  09h    BYTE    POS register 6 (unused, FFh)
  417. --------d-131C0D-----------------------------
  418. INT 13 U - ESDI FIXED DISK - ???
  419.     AX = 1C0Dh
  420.     DL = drive (80h,81h)
  421.     ???
  422. Return: ???
  423. Note:    invokes controller command 0614h without DMA
  424. SeeAlso: AH=1Ch"ESDI",AX=1C0Fh
  425. --------d-131C0E-----------------------------
  426. INT 13 U - ESDI FIXED DISK - TRANSLATE RBA TO ABA
  427.     AX = 1C0Eh
  428.     CH = low 8 bits of cylinder number
  429.     CL = sector number, high two bits of cylinder number in bits 6 and 7
  430.     DH = head number
  431.     DL = drive number (80h,81h)
  432.     ES:BX -> ABA number
  433. Return: CF set on error
  434.     CF clear if successful
  435.     AH = status (see #0144 at AH=01h)
  436. Note:    ABA (absolute block address) format can be found in IBM ESDI Adapter
  437.       Technical Reference by using its Device Configuration Status Block
  438. --------d-131C0F-----------------------------
  439. INT 13 U - ESDI FIXED DISK - ???
  440.     AX = 1C0Fh
  441.     DL = drive (80h,81h)
  442.     ???
  443. Return: ???
  444. Note:    invokes controller command 0614h without DMA
  445. SeeAlso: AH=1Ch"ESDI",AX=1C0Dh,AX=1C12h
  446. --------d-131C12-----------------------------
  447. INT 13 U - ESDI FIXED DISK - ???
  448.     AX = 1C12h
  449.     DL = drive (80h,81h)
  450.     ???
  451. Return: ???
  452. Note:    invokes controller command 0612h without DMA
  453. SeeAlso: AH=1Ch"ESDI",AX=1C0Fh
  454. --------c-131D-------------------------------
  455. INT 13 - IBMCACHE.SYS - CACHE STATUS
  456.     AH = 1Dh
  457.     AL = subfunction
  458.         01h get status record
  459.         DL = drive???
  460.         Return: ES:BX -> status record (see #0173)
  461.             CF set on error
  462.                 AH = error code
  463.         02h set cache status
  464.         ES:BX -> status record (see #0173)
  465.         DL = drive???
  466.         Return: CF set on error
  467.  
  468. Format of IBMCACHE.SYS status record:
  469. Offset    Size    Description    (Table 0173)
  470.  00h    DWORD    total number of read requests
  471.  04h    DWORD    total number of hits
  472.  08h    DWORD    number of physical disk reads
  473.  0Ch    DWORD    total number of sectors requested by physical disk reads
  474.  10h  6 BYTEs    ???
  475.  16h    DWORD    pointer to start of error list (see #0174)
  476.  1Ah    DWORD    pointer to end of error list
  477.  1Eh    WORD    ???
  478.  20h    BYTE    using extended memory if nonzero
  479.  21h    BYTE    ???
  480.  22h  4 BYTEs    ASCII version number
  481.  26h    WORD    cache size in KB
  482.  28h    WORD    sectors per page
  483.  
  484. Format of IBMCACHE.SYS error list:
  485. Offset    Size    Description    (Table 0174)
  486.  00h    DWORD    relative block address of bad page
  487.  04h    BYTE    drive
  488.  05h    BYTE    sector bit-map
  489.  06h    WORD    next error
  490. --------d-131F-------------------------------
  491. INT 13 - SyQuest - DOOR LATCH/DOOR BUTTON DETECT
  492.     AH = 1Fh
  493.     AL = subfunction
  494.         00h allow media removal
  495.         01h prevent media removal (lock door)
  496.     DL = drive ID (bit 7 set for hard disks)
  497. Return: CF clear if successful
  498.         AH = 00h
  499.     CF set on error
  500.         AH = error code
  501.         00h successful
  502.         01h invalid function request
  503.         80h timeout
  504.         DDh media change requested
  505. SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=59h"SyQuest"
  506. --------d-1320-------------------------------
  507. INT 13 - DISK - ??? (Western Digital "Super BIOS")
  508.     AH = 20h
  509.     ???
  510. Return: ???
  511. Notes:    returns some kind of status related to whether the drive contains its
  512.       default media type
  513.     QEMM v6.00 calls INT 13/AX=2000h/DL=81h in some cases
  514. --------b-1320-------------------------------
  515. INT 13 U - Compaq DESKPRO/i - GET CURRENT MEDIA FORMAT
  516.     AH = 20h
  517.     DL = drive number (00h,01h)
  518. Return: CF clear if successful
  519.         AL = media type (see #0175)
  520.     CF set on error
  521.         AH = error code
  522.         30h (Phoenix) ???
  523.         31h no such drive
  524.         32h incorrect drive type stored in CMOS
  525. Notes:    this function is supported by the 3/8/93 ROM BIOS, but only partially
  526.       (AL is always 00h when successful) by the 8/3/93 version
  527.     this function is also supported by some recent versions of the Phoenix
  528.       486 BIOS
  529.  
  530. (Table 0175)
  531. Values for Compaq diskette media type:
  532.  03h    720K
  533.  04h    1.44M
  534.  06h    2.88M
  535.  0Ch    360K
  536.  0Dh    1.2M
  537.  0Eh    ???
  538.  0Fh    ??? (1024-byte sectors)
  539. --------c-1320-------------------------------
  540. INT 13 u - QUICKCACHE II v4.20 - DISMOUNT
  541.     AH = 20h
  542.     AL = drive (00h = A:, etc. or 7Fh for all removable drives???
  543.                    or FFh for all drives)
  544. Return: AX = status (0000h successful)
  545. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  546.       Associates, Inc.
  547. Desc:    flush any dirty buffers for the specified drive(s) and then discard
  548.       those sector buffers
  549. SeeAlso: AH=21h"QUICKCACHE",AH=22h"QUICKCACHE",AH=28h
  550. --------d-1321-------------------------------
  551. INT 13 - HARD DISK - PS/1 and newer PS/2 - READ MULTIPLE DISK SECTORS
  552.     AH = 21h
  553.     AL = number of sectors to write
  554.     CH = low byte of 12-bit cylinder number
  555.     CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
  556.     DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
  557.     DL = drive number (80h,81h)
  558.     ES:BX -> buffer for data to be read
  559. Return: CF clear if successful
  560.         ES:BX buffer filled
  561.     CF set on error
  562.     AH = status (see #0144 at AH=01h)
  563. Desc:    read from the disk using the Multiple Block mode available on newer
  564.       IDE drives and some hard disk controllers, which generates an
  565.       interrupt only after the end of transferring a group of sectors
  566.       rather than after each sector
  567. Notes:    must call AH=24h"PS/1" before using this function
  568.     input values in CL and DH are not range-checked
  569.     the byte at address 0040h:0074h is set to the status of the operation
  570. SeeAlso: AH=02h,AH=22h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
  571. --------c-1321-------------------------------
  572. INT 13 u - QUICKCACHE II v4.20 - FLUSH CACHE
  573.     AH = 21h
  574. Return: AX = status (0000h successful)
  575. Desc:    immediately write all dirty sectors back to disk
  576. SeeAlso: AH=25h"QUICKCACHE",AH=2Eh,AH=2Fh
  577. --------d-1322-------------------------------
  578. INT 13 - HARD DISK - PS/1 and newer PS/2 - WRITE MULTIPLE DISK SECTORS
  579.     AH = 22h
  580.     AL = number of sectors to write
  581.     CH = low byte of 12-bit cylinder number
  582.     CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
  583.     DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
  584.     DL = drive number (80h,81h)
  585.     ES:BX -> buffer containing data to be written
  586. Return: CF clear if successful
  587.     CF set on error
  588.     AH = status (see #0144 at AH=01h)
  589. Desc:    write to the disk using the Multiple Block mode available on newer
  590.       IDE drives and some hard disk controllers, which generates an
  591.       interrupt only after the end of transferring a group of sectors
  592.       rather than after each sector
  593. Notes:    must call AH=24h"PS/1" before using this function
  594.     input values in CL and DH are not range-checked
  595.     the byte at address 0040h:0074h is set to the status of the operation
  596. SeeAlso: AH=03h,AH=21h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
  597. --------c-1322-------------------------------
  598. INT 13 u - QUICKCACHE II v4.20 - ENABLE/DISABLE CACHE
  599.     AH = 22h
  600.     AL = new state (00h disabled, 01h enabled)
  601. Return: AX = status (0000h successful)
  602. Note:    enables/disables caching of all drives
  603. SeeAlso: AH=2Ch,AH=2Dh,AH=32h,AH=33h,AH=A3h,AH=A4h
  604. --------d-1323-------------------------------
  605. INT 13 U - HARD DISK - PS/1 and newer PS/2 - SET CONTROLLER FEATURES REGISTER
  606.     AH = 23h
  607.     AL = feature number (see #0176)
  608.     DL = drive number (80h,81h)
  609.     ???
  610. Return: CF clear if successful
  611.     CF set on error
  612.     AH = status (see #0144 at AH=01h)
  613. SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=24h"PS/1",AH=25h"PS/1"
  614.  
  615. (Table 0176)
  616. Values for PS/1 hard disk feature number:
  617.  01h    select 8-bit data transfers instead of 16-bit
  618.  02h    enable write cache
  619.  22h    Write Same, user-specified area
  620.  33h    disable retries
  621.  44h    set number of ECC bytes for read long/write long (see AH=0Ah,AH=0Bh)
  622.  54h    set cache segments
  623.  55h    disable lookahead
  624.  66h    disable reverting to power-on defaults
  625.  77h    disable error correctioni
  626.  81h    select 16-bit data transfers (default)
  627.  82h    disable write cache
  628.  88h    enable error correction (default)
  629.  99h    enable retries (default)
  630.  AAh    enable lookahead
  631.  BBh    set ECC length for read long/write long to four bytes
  632.  CCh    enable reverting to power-on defaults
  633.  DDh    Write Same, entire disk
  634. --------c-1323-------------------------------
  635. INT 13 U - QUICKCACHE II v4.20 - GET ??? ADDRESS
  636.     AH = 23h
  637. Return: AX = status (0000h successful)
  638.     ES = segment of ??? data
  639. --------d-1324-------------------------------
  640. INT 13 - HARD DISK - PS/1 and newer PS/2 - SET MULTIPLE MODE
  641.     AH = 24h
  642.     AL = number of sectors per block (2,4,8,16)
  643.     DL = drive number (80h,81h)
  644. Return: CF clear if successful
  645.     CF set onerror
  646.     AH = status (see #0144 at AH=01h)
  647. Desc:    specify how many sectors the controller should transfer as a group
  648.       between operation-complete interrupts when using the Read Multiple
  649.       and Write Multiple functions (AH=21h,AH=22h)
  650. Notes:    set the number of sectors to 0 to disable multiple-transfer mode
  651.     the maximum value for the block size depends on the fixed disk
  652.       drive type.  The value is stored in byte 15h of the fixed disk
  653.       drive parameter table that is created by POST.
  654.     the byte at address 0040h:0074h is set to status of operation.
  655. SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=23h"PS/1",AH=25h"PS/1"
  656. --------c-1324-------------------------------
  657. INT 13 u - QUICKCACHE II v4.20 - SET SECTORS
  658.     AH = 24h
  659.     BX = new number of sector buffers in cache
  660. Return: AX = status
  661.         0000h successful
  662.         0001h failed--size adjusted
  663.         8000h cache cannot be resized while enabled
  664. SeeAlso: AH=36h
  665. --------d-1325-------------------------------
  666. INT 13 - HARD DISK - PS/1 and newer PS/2 - IDENTIFY DRIVE
  667.     AH = 25h
  668.     DL = drive number (80h,81h)
  669.     ES:BX-> 512 byte buffer for reply packet
  670. Return: CF clear if successful
  671.     CF set on error
  672.     AH = status (see #0144 at AH=01h)
  673.     buffer filled with ATA/IDE-style drive information block (see #0177)
  674. Desc:    retrieves the 256 words of drive data stored on an IDE hard disk
  675. Note:    the byte at address 0040h:0074h is set to the status of the operation
  676. SeeAlso: AH=23h"PS/1"
  677.  
  678. Format of drive information block:
  679. Offset    Size    Description    (Table 0177)
  680.  00h    WORD    general drive configuration (see #0178)
  681.  02h    WORD    number of cylinders
  682.  04h    WORD    reserved
  683.  06h    WORD    number of heads
  684.  08h    WORD    number of unformatted bytes per track
  685.  0Ah    WORD    number of unformatted bytes per sector
  686.  0Ch    WORD    number of sectors per track
  687.  0Eh  6 BYTEs    vendor unique
  688.  14h 20 BYTEs    serial number in ASCII, 0000h=not specified)
  689.  28h    WORD    buffer type
  690.  2Ah    WORD    buffer size in 512 byte increments (0000h=not specified)
  691.  2Ch    WORD    number of ECC bytes passed on Read/Write Long cmds
  692.         0000h = not specified
  693.  2Eh  8 BYTEs    firmware revision in ASCII, 0000h=not specified
  694.  36h 40 BYTEs    model number in ASCII, 0000h=not specified
  695.  5Eh    WORD    bits 15-8  Vendor Unique
  696.         bits 7-0  00h = Read/Write Multiple commands not implemented
  697.               xxh = Maximum number of sectors that can be
  698.               transferred per interrupt on Read and Write
  699.               Multiple commands
  700.  60h    WORD    0000h = cannot perform doubleword I/O
  701.         0001h = can perform doubleword I/O
  702.  62h    WORD    capabilities
  703.         bit 15-9  0=reserved
  704.         bit 8  1=DMA Supported
  705.         bit 7-0     Vendor Unique
  706.  64h    WORD    reserved
  707.  66h    WORD    bits 15-8 PIO data transfer cycle timing mode
  708.         bits 7-0  Vendor Unique
  709.  68h    WORD    bits 15-8 DMA data transfer cycle timing mode
  710.         bits 7-0  Vendor Unique
  711.  6Ah    WORD    bits 15-1 reserved
  712.         bit 0    1=the fields reported in tranlation mode are valid
  713.             0=the fields reported in translation mode may be valid
  714.  6Ch    WORD    number of current cylinders
  715.  6Eh    WORD    number of current heads
  716.  70h    WORD    number of current sectors per track
  717.  72h    DWORD    current capacity in sectors
  718.  76h    WORD    reserved
  719.  78h 136 BYTEs    not defined by ATA spec 2.6
  720. 100h 64 BYTEs    vendor unique
  721. 140h 96 BYTEs    reserved
  722. Note:    the above description is as in the ATA (AT Attachment) Specification.
  723.  
  724. Bitfields for general drive configuration:
  725. Bit(s)    Description    (Table 0178)
  726.  15    0   reserved for non-magnetic drives
  727.  14    format speed tolerance gap required
  728.  13    track offset option available
  729.  12    data strobe offset option available
  730.  11    rotational speed tolerance is > 0.5%
  731.  10    disk transfer rate > 10 Mbs
  732.  9    disk transfer rate > 5Mbs but <= 10Mbs
  733.  8    disk transfer rate <= 5Mbs
  734.  7    removable cartridge drive
  735.  6    fixed drive
  736.  5    spindle motor control option implemented
  737.  4    head switch time > 15 usec
  738.  3    not MFM encoded
  739.  2    soft sectored
  740.  1    hard sectored
  741.  0    reserved (0)
  742. --------c-1325-------------------------------
  743. INT 13 u - QUICKCACHE II v4.20 - SET FLUSH INTERVAL
  744.     AH = 25h
  745.     BX = interval
  746. Return: AX = status (0000h successful)
  747. Desc:    specify how often the cache should write dirty buffers to disk when
  748.       buffered writes are enabled
  749. SeeAlso: AH=21h"QUICKCACHE",AH=2Ch,AH=2Eh
  750. --------c-1326-------------------------------
  751. INT 13 U - QUICKCACHE II v4.20 - UNINSTALL
  752.     AH = 26h
  753. Return: AX = status
  754.         0000h successful
  755.         0001h-00FFh interrupt vector which was hooked by another TSR
  756. SeeAlso: AH=27h
  757. --------c-1327--BX0000-----------------------
  758. INT 13 u - QUICKCACHE II v4.20 - INSTALLATION CHECK
  759.     AH = 27h
  760.     BX = 0000h
  761. Return: AX = 0000h if installed
  762.     BX nonzero if installed
  763.         BH = major version
  764.         BL = binary minor version
  765. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  766.       Associates, Inc.
  767. SeeAlso: AH=26h,AH=A0h,INT 16/AX=FFA5h/CX=1111h
  768. --------c-1328-------------------------------
  769. INT 13 U - QUICKCACHE II v4.20 - SET AUTOMATIC DISMOUNT
  770.     AH = 28h
  771.     AL = new state (00h disabled, 01h enabled)
  772. Return: AX = status (0000h successful)
  773. SeeAlso: AH=20h"QUICKCACHE"
  774. --------c-1329-------------------------------
  775. INT 13 U - QUICKCACHE II v4.20 - NOP
  776.     AH = 29h
  777. Return: AX = 0000h
  778. --------c-132A-------------------------------
  779. INT 13 u - QUICKCACHE II v4.20 - SET BUFFER SIZE
  780.     AH = 2Ah
  781.     AL = buffer size (1-30)
  782. Return: AX = status (0000h successful)
  783. Desc:    specify the number of cache sector buffers to dedicate to buffered read
  784.       and write operations
  785. SeeAlso: AH=2Ch,AH=2Dh,AH=39h,AH=3Ah
  786. --------c-132B-------------------------------
  787. INT 13 U - QUICKCACHE II v4.20 - DRIVE ACCESS SOUNDS
  788.     AH = 2Bh
  789.     AL = new state (00h disabled, 01h enabled)
  790. Return: AX = status (0000h successful)
  791. --------c-132C-------------------------------
  792. INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED WRITES
  793.     AH = 2Ch
  794.     AL = new state (00h disabled, 01h enabled)
  795. Return: AX = status (0000h successful)
  796. Desc:    specify whether the cache should delay disk writes
  797. Note:    this function enables or disables delayed writes for all drives; use
  798.       AH=38h to change a single drive
  799. SeeAlso: AH=25h"QUICKCACHE",AH=2Dh,AH=2Eh,AH=38h
  800. --------c-132D-------------------------------
  801. INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED READ
  802.     AH = 2Dh
  803.     AL = new state (00h disabled, 01h enabled)
  804. Return: AX = status (0000h successful)
  805. Desc:    specify whether the cache should attempt to read ahead of actual
  806.       requests
  807. Note:    this function enables or disables read-ahead for all drives; use AH=37h
  808.       to change a single drive
  809. SeeAlso: AH=2Ch,AH=37h
  810. --------c-132E-------------------------------
  811. INT 13 u - QUICKCACHE II v4.20 - SET FLUSH COUNT
  812.     AH = 2Eh
  813.     BX = flush count
  814. Return: AX = status (0000h successful)
  815. Desc:    specify how many dirty sectors the cache should write after each flush
  816.       interval (see AH=25h"QUICKCACHE") when buffered writes are enabled
  817. SeeAlso: AH=21h"QUICKCACHE",AH=25h"QUICKCACHE",AH=2Ch
  818. --------c-132F-------------------------------
  819. INT 13 - QUICKCACHE II v4.20 - FORCE IMMEDIATE INCREMENTAL FLUSH
  820.     AH = 2Fh
  821. Return: AX = status (0000h successful)
  822. Desc:    immediately flush up to "flushcount" dirty sectors to disk as if the
  823.       flush interval had expired
  824. SeeAlso: AH=21h"QUICKCACHE"
  825. --------c-1330-------------------------------
  826. INT 13 u - QUICKCACHE II v4.20 - GET INFO
  827.     AH = 30h
  828.     AL = what to get
  829.         00h system info (see #0179)
  830.         01h drive info (see #0180)
  831.         02h access frequency (array of 30 words)
  832.         03h drive index
  833.         (array of 32 bytes indicating BIOS drive for DOS drive)
  834.     DS:DX -> buffer for info
  835. Return: AX = status (0000h successful, 8000h invalid info specifier)
  836. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  837.       Associates, Inc.
  838.  
  839. Format of QUICKCACHE II system info:
  840. Offset    Size    Description    (Table 0179)
  841.  00h    BYTE    flag: cache enabled
  842.  01h    BYTE    flag: buffered writes enabled
  843.  02h    BYTE    flag: buffered reads enabled
  844.  03h    BYTE    flag: sounds enabled
  845.  04h    BYTE    flag: autodismount enabled
  846.  05h    BYTE    ???
  847.  06h    BYTE    flag: ???
  848.  07h    BYTE    flag: ???
  849.  08h    BYTE    flag: "em_assigned"
  850.  09h    BYTE    flag: emulated EMS
  851.  0Ah    BYTE    single sector bonus
  852.  0Bh    BYTE    "sticky_max"
  853.  0Ch    BYTE    write sector bonus
  854.  0Dh    BYTE    bonus threshold
  855.  0Eh    WORD    flush interval
  856.  10h    WORD    flush count
  857.  12h    WORD    reserve pool size
  858.  14h    WORD    remaining space in reserve pool
  859.  16h    WORD    required free memory
  860.  18h    WORD    total cache sectors
  861.  1Ah    WORD    dirty cache sectors
  862.  1Ch    BYTE    trace buffer size
  863.  1Dh    BYTE    reserved (padding)
  864. SeeAlso: #0180
  865.  
  866. Format of QUICKCACHE II drive info [16-element array, one element]:
  867. Offset    Size    Description    (Table 0180)
  868.  00h    BYTE    DOS drive number
  869.  01h    BYTE    BIOS drive number
  870.  02h    BYTE    maximum sector number
  871.  03h    BYTE    maximum head number
  872.  04h    BYTE    read buffer size
  873.  05h    BYTE    write buffer size
  874.  06h    BYTE    last status
  875.  07h    BYTE    flag: enabled
  876.  08h    BYTE    flag: buffered write enabled
  877.  09h    BYTE    flag: buffered read enabled
  878.  0Ah    BYTE    flag: in use (drive info is valid)
  879.  0Bh    BYTE    flag: cylinder flush
  880.  0Ch    BYTE    reserved (padding)
  881.  0Dh    BYTE    sectors per track
  882.  0Eh    WORD    sector size
  883.  10h    WORD    sectors assigned
  884.  12h    WORD    dirty sectors
  885.  14h    WORD    reserved sectors
  886.  16h    WORD    number of read errors
  887.  18h    WORD    number of write errors
  888.  1Ah    DWORD    "rio_count"
  889.  1Eh    DWORD    number of cache misses
  890.  22h    DWORD    "wio_count"
  891.  26h    DWORD    "dio_count"
  892. SeeAlso: #0179
  893. --------c-1331-------------------------------
  894. INT 13 U - QUICKCACHE II v4.20 - RESERVE MEMORY
  895.     AH = 31h
  896.     BX = number of paragraphs of conventional memory to reserve for apps
  897. Return: AX = status (0000h successful)
  898. --------c-1332-------------------------------
  899. INT 13 U - QUICKCACHE II v4.20 - ENABLE CACHING FOR SPECIFIC DRIVE
  900.     AH = 32h
  901.     AL = drive number (00h=A:)
  902. Return: AX = status (0000h successful)
  903. SeeAlso: AH=22h"QUICKCACHE",AH=33h
  904. --------c-1333-------------------------------
  905. INT 13 U - QUICKCACHE II v4.20 - DISABLE CACHING FOR SPECIFIC DRIVE
  906.     AH = 33h
  907.     AL = drive number (00h=A:)
  908. Return: AX = status (0000h successful)
  909. SeeAlso: AH=22h"QUICKCACHE",AH=32h
  910. --------c-1334-------------------------------
  911. INT 13 U - QUICKCACHE II v4.20 - SECTOR LOCKING
  912.     AH = 34h
  913.     AL = function
  914.         00h end sector locking/unlocking
  915.         01h lock all accessed sectors into cache
  916.         02h unlock all accessed sectors and discard from cache
  917. Return: AX = status (0000h successful)
  918. SeeAlso: AH=20h"QUICKCACHE",AH=35h
  919. --------c-1335-------------------------------
  920. INT 13 U - QUICKCACHE II v4.20 - SET LOCK POOL SIZE
  921.     AH = 35h
  922.     BX = number of sectors in lock pool
  923. Return: AX = status (0000h successful)
  924. Desc:    specify the number of cache sector buffers which may be dedicated to
  925.       data locked into the cache
  926. SeeAlso: AH=34h
  927. --------c-1336-------------------------------
  928. INT 13 U - QUICKCACHE II v4.20 - SET TRACE BUFFER SIZE
  929.     AH = 36h
  930.     AL = new size of trace buffer
  931. Return: AX = status (0000h successful)
  932. Note:    called with AL=05h during an INT 13/AH=24h"QUICKCACHE" call
  933. SeeAlso: AH=24h"QUICKCACHE"
  934. --------c-1337-------------------------------
  935. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED READS FOR SPECIFIC DRIVE
  936.     AH = 37h
  937.     AL = new state (00h disabled, else enabled)
  938.     DL = drive number (00h = A:)
  939. Return: AX = status (0000h successful)
  940. SeeAlso: AH=2Dh,AH=38h
  941. --------c-1338-------------------------------
  942. INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED WRITES FOR SPECIFIC DRIVE
  943.     AH = 38h
  944.     AL = new state (00h disabled, else enabled)
  945.     DL = drive number (00h = A:)
  946. Return: AX = status (0000h successful)
  947. SeeAlso: AH=2Ch,AH=37h
  948. --------c-1339-------------------------------
  949. INT 13 U - QUICKCACHE II v4.20 - SET READ BUFFER SIZE FOR SPECIFIC DRIVE
  950.     AH = 39h
  951.     AL = new size of read buffer
  952.     DL = drive number (00h = A:)
  953. Return: AX = status (0000h successful)
  954. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  955.       Associates, Inc.
  956. SeeAlso: AH=2Ah,AH=3Ah
  957. --------c-133A-------------------------------
  958. INT 13 U - QUICKCACHE II v4.20 - SET WRITE BUFFER SIZE FOR SPECIFIC DRIVE
  959.     AH = 3Ah
  960.     AL = new size of write buffer
  961.     DL = drive number (00h = A:)
  962. Return: AX = status (0000h successful)
  963. SeeAlso: AH=2Ah,AH=39h
  964. --------c-133B-------------------------------
  965. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  966.     AH = 3Bh
  967.     AL = new state of ??? (01h enabled, else disabled)
  968. Return: AX = status (0000h successful)
  969. Note:    is affected by the flag reported at offset 05h of the system info
  970.       returned by AH=30h, and sets the flag at offset 06h
  971. SeeAlso: AH=3Ch
  972. --------c-133C-------------------------------
  973. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
  974.     AH = 3Ch
  975.     AL = new state of ??? (01h enabled, else disabled)
  976. Return: AX = status (0000h successful)
  977. Note:    is affected by the flag reported at offset 05h of the system info
  978.       returned by AH=30h, and sets the flag at offset 07h
  979. SeeAlso: AH=3Bh
  980. --------c-133D-------------------------------
  981. INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE CYLINDER FLUSH FOR DRIVE
  982.     AH = 3Dh
  983.     AL = new state (01h enabled, else disabled)
  984.     DL = drive number (00h = A:)
  985. Return: AX = status (0000h successful)
  986. --------c-133E-------------------------------
  987. INT 13 U - QUICKCACHE II v4.20 - SET SINGLE-SECTOR BONUS
  988.     AH = 3Eh
  989.     AL = new value for bonus
  990. Return: AX = status (0000h successful)
  991. Desc:    specify the bonus score to give to single-sector transfers in order to
  992.       keep those sectors in the cache longer
  993. --------c-133F-------------------------------
  994. INT 13 U - QUICKCACHE II v4.20 - SET BONUS THRESHOLD
  995.     AH = 3Fh
  996.     AL = new value for bonus threshold
  997. Return: AX = status (0000h successful)
  998. --------c-1340-------------------------------
  999. INT 13 U - QUICKCACHE II v4.20 - SET "sticky_max"
  1000.     AH = 40h
  1001.     AL = new value for "sticky_max"
  1002. Return: AX = status (0000h successful)
  1003. SeeAlso: AH=41h"QUICKCACHE"
  1004. --------d-1341--BX55AA-----------------------
  1005. INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK
  1006.     AH = 41h
  1007.     BX = 55AAh
  1008.     DL = drive (80h-FFh)
  1009. Return: CF set on error (not supported)
  1010.         AH = 01h (invalid function)
  1011.     CF clear if successful
  1012.         BX = AA55h if installed
  1013.         AH = major version of extensions
  1014.         (01h = 1.x, 20h = 2.0/EDD-1.0, 21h = 2.1/EDD-1.1)
  1015.         AL = internal use
  1016.         CX = API subset support bitmap (see #0181)
  1017.         DH = extension version (v2.0+ ??? -- not present in 1.x)
  1018. Note:    the Phoenix Enhanced Disk Drive Specification v1.0 uses version 2.0 of
  1019.       the INT 13 Extensions API
  1020. SeeAlso: AH=42h"INT 13 Ext",AH=48h"INT 13 Ext"
  1021.  
  1022. Bitfields for IBM/MS INT 13 Extensions API support bitmap:
  1023. Bit(s)    Description    (Table 0181)
  1024.  0    extended disk access functions (AH=42h-44h,47h,48h) supported
  1025.  1    removable drive controller functions (AH=45h,46h,48h,49h,INT 15/AH=52h)
  1026.       supported
  1027.  2    enhanced disk drive (EDD) functions (AH=48h,AH=4Eh) supported
  1028.     extended drive parameter table is valid (see #0183,#0186)
  1029.  3-15    reserved (0)
  1030. --------c-1341-------------------------------
  1031. INT 13 U - QUICKCACHE II v4.20 - SAVE/RESTORE ???
  1032.     AH = 41h
  1033.     AL = direction
  1034.         01h save to file
  1035.         else restore from file
  1036.     ES:DI -> 1024-byte buffer for ???
  1037. Return: AX = status (0000h successful, 8000h failed)
  1038. Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
  1039.       Associates, Inc.
  1040. SeeAlso: AH=40h"QUICKCACHE"
  1041. --------d-1342-------------------------------
  1042. INT 13 - IBM/MS INT 13 Extensions - EXTENDED READ
  1043.     AH = 42h
  1044.     DL = drive number
  1045.     DS:SI -> disk address packet (see #0182)
  1046. Return: CF clear if successful
  1047.         AH = 00h
  1048.     CF set on error
  1049.         AH = error code (see #0144)
  1050.         disk address packet's block count field set to number of blocks
  1051.           successfully transferred
  1052. SeeAlso: AH=02h,AH=41h"INT 13 Ext",AH=43h"INT 13 Ext"
  1053.  
  1054. Format of disk address packet:
  1055. Offset    Size    Description    (Table 0182)
  1056.  00h    BYTE    10h (size of packet)
  1057.  01h    BYTE    reserved (0)
  1058.  02h    WORD    number of blocks to transfer (max 007Fh for Phoenix EDD)
  1059.  04h    DWORD    -> transfer buffer
  1060.  08h    QWORD    starting absolute block number
  1061.         (for non-LBA devices, compute as
  1062.           (Cylinder*NumHeads + SelectedHead) * SectorPerTrack +
  1063.           SelectedSector - 1
  1064. --------N-134257DX1234-----------------------
  1065. INT 13 U - Beame&Whiteside BWLPD - INSTALLATION CHECK
  1066.     AX = 4257h ("BW")
  1067.     DX = 1234h
  1068. Return: BX = 414Ch if installed
  1069. Program: BWLPD is the printer daemon from the BW-NFS package
  1070. SeeAlso: INT 62/AH=00h"ETHDEV"
  1071. --------d-1343-------------------------------
  1072. INT 13 - IBM/MS INT 13 Extensions - EXTENDED WRITE
  1073.     AH = 43h
  1074.     AL = write flags
  1075.        ---v1.0,2.0---
  1076.        bit 0: verify write
  1077.        bits 7-1 reserved (0)
  1078.        ---v2.1---
  1079.        00h,01h write without verify
  1080.        02h write with verify
  1081.     DL = drive number
  1082.     DS:SI -> disk address packet (see #0182)
  1083. Return: CF clear if successful
  1084.         AH = 00h
  1085.     CF set on error
  1086.         AH = error code (see #0144)
  1087.         disk address packet's block count field set to number of blocks
  1088.           successfully transferred
  1089. Note:    the BIOS returns CF set/AH=01h (invalid function) if verify is
  1090.       requested but not supported
  1091. SeeAlso: AH=03h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=44h
  1092. --------d-1344-------------------------------
  1093. INT 13 - IBM/MS INT 13 Extensions - VERIFY SECTORS
  1094.     AH = 44h
  1095.     DL = drive number
  1096.     DS:SI -> disk address packet (see #0182)
  1097. Return: CF clear if successful
  1098.         AH = 00h
  1099.     CF set on error
  1100.         AH = error code (see #0144)
  1101.         disk address packet's block count field set to number of blocks
  1102.           successfully verified
  1103. SeeAlso: AH=04h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=47h
  1104. --------d-1345-------------------------------
  1105. INT 13 - IBM/MS INT 13 Extensions - LOCK/UNLOCK DRIVE
  1106.     AH = 45h
  1107.     AL = operation
  1108.         00h lock media in drive
  1109.         01h unlock media
  1110.         02h check lock status
  1111.     DL = drive number
  1112. Return: CF clear if successful
  1113.         AH = 00h
  1114.         AL = lock state (00h = unlocked)
  1115.     CF set on error
  1116.         AH = error code (see #0144)
  1117. Notes:    this function is required to be supported for any removable drives
  1118.       numbered 80h or higher
  1119.     up to 255 locks may be placed on a drive, and the media will not
  1120.       be physically unlocked until all locks have been removed
  1121. SeeAlso: AH=41h"INT 13 Ext",AH=46h,AH=49h,INT 15/AH=52h"INT 13 Extensions"
  1122. --------d-1346-------------------------------
  1123. INT 13 - IBM/MS INT 13 Extensions - EJECT MEDIA
  1124.     AH = 46h
  1125.     AL = 00h (reserved)
  1126.     DL = drive number
  1127. Return: CF clear if successful
  1128.         AH = 00h
  1129.     CF set on error
  1130.         AH = error code (see #0144)
  1131. SeeAlso: AH=49h,INT 15/AH=52h"INT 13 Extensions"
  1132. --------d-1347-------------------------------
  1133. INT 13 - IBM/MS INT 13 Extensions - EXTENDED SEEK
  1134.     AH = 47h
  1135.     DL = drive number
  1136.     DS:SI -> disk address packet (see #0182)
  1137. Return: CF clear if successful
  1138.         AH = 00h
  1139.     CF set on error
  1140.         AH = error code (see #0144)
  1141. SeeAlso: AH=0Ch,AH=42h"INT 13 Ext"
  1142. --------d-1348-------------------------------
  1143. INT 13 - IBM/MS INT 13 Extensions - GET DRIVE PARAMETERS
  1144.     AH = 48h
  1145.     DL = drive (80h-FFh)
  1146.     DS:SI -> buffer for drive parameters (see #0183)
  1147. Return: CF clear if successful
  1148.         AH = 00h
  1149.         DS:SI buffer filled
  1150.     CF set on error
  1151.         AH = error code (see #0144)
  1152. SeeAlso: AH=08h,AH=41h,AH=49h
  1153.  
  1154. Format of IBM/MS INT 13 Extensions drive parameters:
  1155. Offset    Size    Description    (Table 0183)
  1156.  00h    WORD    (call) size of buffer (001Ah for v1.x, 001Eh for v2.x)
  1157.         (ret) size of returned data
  1158.  02h    WORD    information flags (see #0184)
  1159.  04h    DWORD    number of cylinders on drive
  1160.  08h    DWORD    number of heads on drive
  1161.  0Ch    DWORD    number of sectors per track
  1162.  10h    QWORD    total number of sectors on drive
  1163.  18h    WORD    bytes per sector
  1164. ---v2.0+ ---
  1165.  1Ah    DWORD    -> configuration parameters (see #0186)
  1166.         FFFFh:FFFFh if not available
  1167. Note:    if the size is less than 30 on call, the final DWORD will not be
  1168.       returned by a v2.x implementation
  1169. SeeAlso: #0185,#2451
  1170.  
  1171. Bitfields for IBM/MS INT 13 Extensions information flags:
  1172. Bit(s)    Description    (Table 0184)
  1173.  0    DMA boundary errors handled transparently
  1174.  1    cylinder/head/sectors-per-track information is valid
  1175.  2    removable drive
  1176.  3    write with verify supported
  1177.  4    drive has change-line support (required if drive >= 80h is removable)
  1178.  5    drive can be locked (required if drive >= 80h is removable)
  1179.  6    CHS information set to maximum supported values, not current media
  1180.  15-7    reserved (0)
  1181. SeeAlso: #0183
  1182.  
  1183. Format of Phoenix Enhanced Disk Drive Spec translated drive parameter table:
  1184. Offset    Size    Description    (Table 0185)
  1185.  00h    WORD    number of cylinders
  1186.  02h    BYTE    number of heads
  1187.  03h    BYTE    A0h (signature indicating translated table)
  1188.  04h    BYTE    number of physical sectors per track
  1189.  05h    WORD    starting write precompensation cylinder number
  1190.  07h    BYTE    reserved
  1191.  08h    BYTE    control byte (see #2453 at INT 41"DISK 0")
  1192.  09h    WORD    number of physical cylinders
  1193.  0Bh    BYTE    number of physical heads
  1194.  0Ch    WORD    cylinder number of landing zone
  1195.  0Eh    BYTE    number of logical sectors per track
  1196.  0Fh    BYTE    checksum
  1197. Program: the Phoenix Enhanced Disk Drive Specification is an addition to the
  1198.       IBM/MS INT 13 extensions
  1199. SeeAlso: #0186,#2451
  1200.  
  1201. Format of Phoenix Enhanced Disk Drive Spec Fixed Disk Parameter Table:
  1202. Offset    Size    Description    (Table 0186)
  1203.  00h    WORD    physical I/O port base address
  1204.  02h    WORD    disk-drive control port address
  1205.  04h    BYTE    drive flags (see #0187)
  1206.  05h    BYTE    proprietary information
  1207.         bits 7-4 reserved (0)
  1208.         bits 3-0: Phoenix proprietary (used by BIOS)
  1209.  06h    BYTE    IRQ (bits 3-0; bits 7-4 reserved and must be 0)
  1210.  07h    BYTE    sector count for multi-sector transfers
  1211.  08h    BYTE    DMA control
  1212.         bits 7-4: DMA type (0-2) as per ATA-2 specification
  1213.         bits 3-0: DMA channel
  1214.  09h    BYTE    programmed I/O control
  1215.         bits 7-4: reserved (0)
  1216.         bits 3-0: PIO type (1-4) as per ATA-2 specification
  1217.  0Ah    WORD    drive options (see #0188)
  1218.  0Ch  2 BYTEs    reserved (0)
  1219.  0Eh    BYTE    extension revision level (high nybble=major, low nybble=minor)
  1220.         (currently 10h for v1.0 and 11h for v1.1)
  1221.  0Fh    BYTE    2's complement checksum of bytes 00h-0Eh
  1222.         8-bit sum of all bytes 00h-0Fh should equal 00h
  1223. SeeAlso: #0185
  1224.  
  1225. Bitfields for Phoenix Enhanced Disk Drive Spec drive flags:
  1226. Bit(s)    Description    (Table 0187)
  1227.  7    reserved (1)
  1228.  6    LBA enabled
  1229.  5    reserved (1)
  1230.  4    drive is slave
  1231.  3-0    reserved (0)
  1232. SeeAlso: #0186,#0188
  1233.  
  1234. Bitfields for Phoenix Enhanced Disk Drive Spec drive options:
  1235. Bit(s)    Description    (Table 0188)
  1236.  0    fast PIO enabled
  1237.  1    fast DMA access enabled
  1238.  2    block PIO (multi-sector transfers) enabled
  1239.  3    CHS translation enabled
  1240.  4    LBA translation enabled
  1241.  5    removable media
  1242.  6    ATAPI device (CD-ROM)
  1243.  7    32-bit transfer mode
  1244. ---v1.1---
  1245.  8    ATAPI device uses DRQ to signal readiness for packet command
  1246.     (must be 0 if bit 6 is 0)
  1247.  10-9    translation type (must be 00 if bit 3 is 0)
  1248.     00 Phoenix bit-shifting translation
  1249.     01 LBA-assisted translation
  1250.     10 reserved
  1251.     11 proprietary translation
  1252.  15-8    reserved
  1253. SeeAlso: #0186,#0187
  1254. --------d-1349-------------------------------
  1255. INT 13 - IBM/MS INT 13 Extensions - EXTENDED MEDIA CHANGE
  1256.     AH = 49h
  1257.     DL = drive number
  1258. Return: CF clear if media has not changed
  1259.         AH = 00h
  1260.     CF set if media may have changed
  1261.         AH = 06h (see #0144)
  1262. Note:    unlike AH=16h, any drive number may be specified
  1263. SeeAlso: AH=16h,AH=41h"INT 13 Ext",AH=46h
  1264. --------d-134A-------------------------------
  1265. INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION
  1266.     AH = 4Ah
  1267.     AL = 00h
  1268.     DS:SI -> specification packet (see #0189)
  1269. Return: CF clear if successful
  1270.     CF set on error (drive will not be in emulation mode)
  1271.     AX = return codes
  1272. SeeAlso: AH=48h,AX=4B00h,AH=4Ch,AH=4Dh
  1273.  
  1274. Format of Bootable CD-ROM Specification Packet:
  1275. Offset    Size    Description    (Table 0189)
  1276.  00h    BYTE    size of packet in bytes (13h)
  1277.  01h    BYTE    boot media type (see #0190)
  1278.  02h    BYTE    drive number
  1279.         (00h floppy image, 80h bootable hard disk, 81h-FFh nonbootable)
  1280.  03h    BYTE    CD-ROM controller number
  1281.  04h    DWORD    Logical Block Address of disk image to emulate
  1282.  08h    WORD    device specification (see also #0190)
  1283.         (IDE) bit 0: drive is slave instead of master
  1284.         (SCSI)    bits 7-0: LUN and PUN
  1285.             bits 15-8: bus number
  1286.  0Ah    WORD    segment of 3K buffer for caching CD-ROM reads
  1287.  0Ch    WORD    load segment for initial boot image
  1288.         if 0000h, load at segment 07C0h
  1289.  0Eh    WORD    number of 512-byte virtual sectors to load
  1290.         (only valid for AH=4Ch)
  1291.  10h    BYTE    low byte of cylinder count (for INT 13/AH=08h)
  1292.  11h    BYTE    sector count, high bits of cylinder count (for INT 13/AH=08h)
  1293.  12h    BYTE    head count (for INT 13/AH=08h)
  1294. SeeAlso: #0191,AH=08h
  1295.  
  1296. Bitfields for Bootable CD-ROM boot media type:
  1297. Bit(s)    Description    (Table 0190)
  1298.  3-0    media type
  1299.     0000 no emulation
  1300.     0001 1.2M diskette
  1301.     0010 1.44M diskette
  1302.     0011 2.88M diskette
  1303.     0100 hard disk (drive C:)
  1304.     other reserved
  1305.  5-4    reserved (0)
  1306.  6    image contains ATAPI driver
  1307.  7    image contains SCSI driver(s)
  1308. SeeAlso: #0189
  1309. --------d-134B00-----------------------------
  1310. INT 13 - Bootable CD-ROM - TERMINATE DISK EMULATION
  1311.     AX = 4B00h
  1312.     DL = drive number or 7Fh to terminate all emulations
  1313.     DS:SI -> empty specification packet (see #0189)
  1314. Return: CF clear if successful
  1315.     CF set on error (drive will still be in emulation mode)
  1316.     AX = return codes
  1317.     DS:SI specification packet filled
  1318. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh
  1319. --------d-134B01-----------------------------
  1320. INT 13 - Bootable CD-ROM - GET STATUS
  1321.     AX = 4B01h
  1322.     DL = drive number or 7Fh to terminate all emulations
  1323.     DS:SI -> empty specification packet (see #0189)
  1324. Return: CF clear if successful
  1325.     CF set on error
  1326.     AX = return codes
  1327.     DS:SI specification packet filled
  1328. Note:    same as AX=4B00h, but does not terminate emulation
  1329. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh
  1330. --------d-134C-------------------------------
  1331. INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION AND BOOT
  1332.     AH = 4Ch
  1333.     AL = 00h
  1334.     DS:SI -> specification packet (see #0189)
  1335. Return: never if successful
  1336.     CF set (error while attempting to boot)
  1337.     AX = error codes
  1338. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Dh
  1339. --------d-134D-------------------------------
  1340. INT 13 - Bootable CD-ROM - RETURN BOOT CATALOG
  1341.     AH = 4Dh
  1342.     AL = 00h
  1343.     DS:SI -> command packet (see #0191)
  1344. Return: CF clear if successful
  1345.     CF set on error
  1346.     AX = return codes
  1347. SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch
  1348.  
  1349. Format of Bootable CD-ROM "get boot catalog" command packet:
  1350. Offset    Size    Description    (Table 0191)
  1351.  00h    BYTE    size of packet in bytes (08h)
  1352.  01h    BYTE    number of sectors of boot catalog to read
  1353.  02h    DWORD    -> buffer for boot catalog
  1354.  06h    WORD    first sector in boot catalog to transfer
  1355. SeeAlso: #0189
  1356. --------d-134E-------------------------------
  1357. INT 13 - IBM/MS INT 13 Extensions v2.1 - SET HARDWARE CONFIGURATION
  1358.     AH = 4Eh
  1359.     AL = function
  1360.         00h enable prefetch
  1361.         01h disable prefetch
  1362.         02h set maximum PIO transfer mode
  1363.         03h set PIO mode 0
  1364.         04h set default PIO transfer mode
  1365.         05h enable INT 13 DMA maximum mode
  1366.         06h disable INT 13 DMA
  1367.     DL = drive number
  1368. Return: CF clear if successful
  1369.         AH = 00h
  1370.         AL = status
  1371.         00h command was safe (only affected specified drive)
  1372.         01h other devices are affected
  1373.     CF set on error
  1374.         AH = error code (see #0144)
  1375. Note:    DMA and PIO modes are mutually exclusive, so selecting DMA disables
  1376.       PIO (for either the specified device or all devices on that
  1377.       controller), and selecting PIO disables DMA
  1378. SeeAlso: AH=41h"INT 13 Extensions"
  1379. --------v-135001------------------------
  1380. INT 13 - VIRUS - "Andropinis" - INSTALLATION CHECK
  1381.     AX = 5001h
  1382. Return: AX = 0150h if resident
  1383. SeeAlso: AX=FD50h"VIRUS",INT 21/AX=0B56h
  1384. --------v-135342CX0001-----------------------
  1385. INT 13 - ScanBoot - INSTALLATION CHECK
  1386.     AX = 5342h ("SB")
  1387.     CX = 0001h
  1388.     DX = 0000h
  1389. Return: CF clear if ScanBoot installed
  1390.        AX = 0000h
  1391.        CX = serial number ("SW" if shareware release)
  1392.        DX = version
  1393.        BX,SI,ES destroyed
  1394. Program: ScanBoot is a virus-detection TSR by PanSoft
  1395. --------d-135501-----------------------------
  1396. INT 13 - Seagate ST01/ST02 - Inquiry
  1397.     AX = 5501h
  1398.     DH = number of bytes to transfer
  1399.     DL = drive ID (80h, 81h, ...)
  1400.     ES:BX -> buffer for results
  1401. Return: ES:BX buffer filled with the Inquiry results
  1402. Notes:    the ST01/ST02 BIOS does not return any success/failure indication,
  1403.       so all commands must be assumed to have been successful
  1404.     the ST01/ST02 BIOS always maps its drives after the previous BIOS
  1405.       drives without changing the BIOS drive count at 0040h:0075h
  1406.     this command is identical to the SCSI Inquiry command
  1407. --------d-135502-----------------------------
  1408. INT 13 - Seagate ST01/ST02 - RESERVED
  1409.     AX = 5502h
  1410. --------d-135503-----------------------------
  1411. INT 13 - Seagate ST01/ST01 - Set Device Type Qualifier (DTQ)
  1412.     AX = 5503h
  1413.     DH = DTQ byte (see #0192)
  1414.     DL = drive ID (80h, 81h, ...)
  1415. Return: nothing
  1416.  
  1417. Bitfields for DTQ byte:
  1418. Bit(s)    Description    (Table 0192)
  1419.  7    reserved
  1420.  6    SCSI drive attached
  1421.  5    reserved
  1422.  4    selected drive is ST225N/NP (Paired)
  1423.  3    selected drive is ST225N
  1424.  2    Host Adapter checks parity on the selected drive
  1425.  1    selected drive has been installed
  1426.  0    Seagate installation software present
  1427. --------d-135504-----------------------------
  1428. INT 13 U - Seagate - ??? - RETURN IDENTIFICATION
  1429.     AX = 5504h
  1430.     DX = drive (bit 7 set for hard disk)
  1431. Return: CF clear if successful
  1432.         AX = 4321h if ST01/ST02h
  1433.         AX = 4322h if ??? Seagate controller
  1434.     CF set on error
  1435. SeeAlso: AX=5505h,AX=5514h
  1436. --------d-135504-----------------------------
  1437. INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION
  1438.     AX = 5504h
  1439.     DL = drive ID (80h, 81h, ...)
  1440. Return: AX = 4321h
  1441.     BL = selected drive number (00h, 01h)
  1442.     BH = number of drives attached to Host Adapter (max. 2)
  1443. --------d-135505-----------------------------
  1444. INT 13 - Seagate - ??? - PARK HEADS
  1445.     AX = 5505h
  1446.     DX = drive (bit 7 set for hard disk)
  1447. Return: CF clear if successful
  1448.     CF set on error
  1449. SeeAlso: AX=5504h,AX=5515h
  1450. --------d-135505-----------------------------
  1451. INT 13 - Seagate ST01/ST02 - PARK HEADS
  1452.     AX = 5505h
  1453.     DL = drive ID (80h, 81h, ...)
  1454.     DH = subfunction
  1455.         00h park heads (SCSI Stop command)
  1456.         01h un-park heads (SCSI Start command)
  1457. Return: nothing
  1458. --------d-135506-----------------------------
  1459. INT 13 - Seagate ST01/ST02 - SCSI Bus Parity
  1460.     AX = 5506h
  1461.     DL = drive ID (80h, 81h, ...)
  1462.     DH = subfunction
  1463.         00h disable parity check
  1464.         01h enable parity check
  1465.         02h return current parity setting
  1466. Return: AL = status
  1467.         00h parity checking disabled
  1468.         01h parity checking enabled
  1469. --------d-135507-----------------------------
  1470. INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS
  1471.     AX = 5507h to 550Dh
  1472. Note:    officially listed as "reserved"
  1473. --------d-135514-----------------------------
  1474. INT 13 U - Seagate - ???
  1475.     AX = 5514h
  1476.     DX = drive (bit 7 set for hard disk)
  1477. Return: CF clear if successful
  1478.     CF set on error
  1479.     AX = return value (FEBEh,FEBFh,FEDAh,FEDBh)
  1480. SeeAlso: AX=5504h,AX=5515h
  1481. --------d-135515-----------------------------
  1482. INT 13 U - Seagate - PARK HEADS???
  1483.     AX = 5515h
  1484.     DX = drive (bit 7 set for hard disk)
  1485. Return: CF clear if successful
  1486.     CF set on error
  1487. Note:    appears to be identical to AX=5505h
  1488. SeeAlso: AX=5504h,AX=5505h
  1489. --------d-1359-------------------------------
  1490. INT 13 - SyQuest - Generic SCSI pass through
  1491.     AH = 59h
  1492.     CX = HOST_ID, 0-based
  1493.     DX = 80h
  1494.     ES:BX pointer to SCSI structure (see #0193)
  1495. Return: CF clear
  1496.     AH = 95h
  1497. SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=1Fh"SyQuest"
  1498.  
  1499. Format of SyQuest SCSI structure:
  1500. Offset    Size    Description    (Table 0193)
  1501.  00h    WORD    opcode (see #0194)
  1502.  02h    BYTE    target's SCSI ID
  1503.  03h    BYTE    target's logical unit number
  1504.  04h    BYTE    data direction (00h no data xfer, 01h data in, FFh data out)
  1505.  05h    BYTE    host status
  1506.         00h successful
  1507.         01h selection time out
  1508.         02h data over-run or under-run
  1509.  06h    BYTE    target status at command completion
  1510.         00h successful
  1511.         02h check status
  1512.         08h busy
  1513.  07h    BYTE    command data block length
  1514.  08h    DWORD    request data length
  1515.  0Ch    DWORD    result data length (actual length of data transferred)
  1516.  10h    DWORD    -> CDB
  1517.  14h    DWORD    -> data buffer
  1518. Note:    The handler does not perform a 'Request Sense' command if there was an
  1519.       error
  1520.  
  1521. (Table 0194)
  1522. Values for SCSI opcode:
  1523.  00h    verify interface
  1524.     clears carry flag and returns if function is available
  1525.  01h    returns the ID of the INT 13h Handler in a NULL terminated string of
  1526.     length less than 40 byte including the terminator.
  1527.     The string is stored in the buffer pointed by p_buf.
  1528.  02h    device mapping info. The caller provides a one byte buffer.
  1529.     The handler stores the Int 13h Device ID (80h or above) in the buffer.
  1530.     It stores 0 if that target does not exists.
  1531.  03h    execute SCSI command
  1532.  04h    device reset
  1533.  05h    SCSI bus reset
  1534. SeeAlso: #0193
  1535. --------d-1370-------------------------------
  1536. INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
  1537.     AH = 70h
  1538.     ???
  1539. Return: ???
  1540. Note:    Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
  1541.       formatting program) make this call, presumably to EDVR.SYS (the
  1542.       partitioning driver)
  1543. SeeAlso: AH=ADh
  1544. ----------1375-------------------------------
  1545. INT 13 - ???
  1546.     AH = 75h
  1547.     ???
  1548. Return: AH = ???
  1549.     ???
  1550. Note:    intercepted by PC-Cache (v5.1 only)
  1551. ----------1376-------------------------------
  1552. INT 13 - ???
  1553.     AH = 76h
  1554.     ???
  1555. Return: AH = ???
  1556.     ???
  1557. Note:    intercepted by PC-Cache (v5.1 only)
  1558. --------c-137B00-----------------------------
  1559. INT 13 - NOW! v3.05 - GET INFORMATION
  1560.     AX = 7B00h
  1561.     CX:DX -> 1F8h-byte buffer for information record (see #0195)
  1562. Return: AX = 0000h
  1563.     BX = segment of main resident code
  1564.     ES = ???
  1565. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  1566. SeeAlso: AX=7B02h,AH=EFh
  1567.  
  1568. Format of NOW! information record:
  1569. Offset    Size    Description    (Table 0195)
  1570.  00h 80 BYTEs    name of directory from which NOW! was started
  1571.  50h 424 BYTEs    ???
  1572.  81h  ? BYTEs    array of bytes for ???
  1573.  F7h 250 BYTEs    array of 25 entries, one per drive???
  1574.     Offset    Size    Description
  1575.      00h  2 BYTEs    ???
  1576.      02h    WORD    ???
  1577.      04h    WORD    ???
  1578.      06h  4 BYTEs    ???
  1579. 1F1h  7 BYTEs    ???
  1580. --------c-137B01-----------------------------
  1581. INT 13 - NOW! v3.05 - ???
  1582.     AX = 7B01h
  1583. Return: DX = segment of ???
  1584. SeeAlso: AX=7B00h
  1585. --------c-137B02-----------------------------
  1586. INT 13 - NOW! v3.05 - SET INFORMATION
  1587.     AX = 7B02h
  1588.     BX = segment of ??? (10h above a PSP)
  1589.     CX:DX -> 1F8h-byte information record (see #0195)
  1590. Return: ???
  1591. Program: NOW! is a disk cache by Vertisoft Systems, Inc.
  1592. Note:    NOW! grabs the INT 24h value from the PSP reached via the segment in
  1593.       BX
  1594. SeeAlso: AX=7B00h
  1595. --------c-137B03-----------------------------
  1596. INT 13 - NOW! v3.05 - ???
  1597.     AX = 7B03h
  1598.     ???
  1599. Return: ???
  1600. SeeAlso: AX=7B00h,AX=7B04h
  1601. --------c-137B04-----------------------------
  1602. INT 13 - NOW! v3.05 - ???
  1603.     AX = 7B04h
  1604.     ???
  1605. Return: ???
  1606. SeeAlso: AX=7B03h
  1607. --------c-137B05-----------------------------
  1608. INT 13 - NOW! v3.05 - GET DISK ACCESSES???
  1609.     AX = 7B05h
  1610. Return: BX:AX = number of physical accesses???
  1611.     DX:CX = total disk accesses???
  1612. SeeAlso: AX=7B00h,AX=7B06h
  1613. --------c-137B06-----------------------------
  1614. INT 13 - NOW! v3.05 - GET ???
  1615.     AX = 7B06h
  1616.     BX = ???
  1617. Return: AX = 0000h
  1618.     BX = ???
  1619. SeeAlso: AX=7B05h,AX=7B07h
  1620. --------c-137B07-----------------------------
  1621. INT 13 - NOW! v3.05 - GET ???
  1622.     AX = 7B07h
  1623. Return: AX = ???
  1624.     BX = ???
  1625.     CX = ???
  1626.     DX = ???
  1627. SeeAlso: AX=7B06h
  1628. --------c-137B08-----------------------------
  1629. INT 13 - NOW! v3.05 - ???
  1630.     AX = 7B08h
  1631.     CX = ??? (default 00h)
  1632. Return: ???
  1633. SeeAlso: AX=7B00h
  1634. --------c-1380--CX6572-----------------------
  1635. INT 13 - FAST! v4.02+ - API
  1636.     AH = 80h
  1637.     CX = 6572h
  1638.     DX = 1970h
  1639.     ES:BX -> request packet (see #0197)
  1640.     AL = function number (see #0196)
  1641. Return: AH = status (except function 06h)
  1642.         00h if successful
  1643.         01h invalid function
  1644.         05h not supported by the installed variant
  1645.     CF clear if successful
  1646.     CF set on error
  1647.     AL may be destroyed
  1648. Program: FAST! is a disk cache by Future Computing Systems and marketed by
  1649.       BLOC Publishing Corp.
  1650. SeeAlso: AX=8001h,AX=8006h,AX=8007h
  1651. Index:    hotkeys;FAST!
  1652.  
  1653. (Table 0196)
  1654. Values for FAST! function:
  1655.  01h    get cache information (see AX=8001h)
  1656.  04h    disable cache
  1657.  05h    enable cache and reset statistics
  1658.  06h    installation check (see AX=8006h)
  1659.  07h    unhook interrupts (see AX=8007h)
  1660.  09h    flush cache
  1661.  0Ah    (v4.02+) enable staged writes
  1662.  0Bh    (v4.02+) disable staged writes
  1663.  0Ch    (v4.02+) enable beep on flush
  1664.  0Dh    (v4.02+) disable beep on flush
  1665.  0Eh    ???
  1666.  0Fh    ???
  1667.  10h    (v4.12+) enable hotkeys
  1668.  11h    (v4.12+) disable hotkeys
  1669.  12h    (v4.13+) set idle delay
  1670.  13h    (v4.13+) set flush dirty percentage
  1671.  14h    (v5.00+) enable mouse checks
  1672.  15h    (v5.00+) disable mouse checks
  1673.  16h    (v5.00d+) reduce cache size to minimum
  1674.  17h    (v5.00d+) increase cache size to maximum
  1675.  
  1676. Format of FAST! request packet:
  1677. Offset    Size    Description    (Table 0197)
  1678.  00h    DWORD    pointer to 19-byte signature string (see #0198)
  1679.  04h    DWORD    pointer to buffer for data (if needed by function)
  1680.  
  1681. (Table 0198)
  1682. Values for FAST! v4.04-v5.03 signature string:
  1683.  13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h 04h 08h 15h
  1684. --------c-138001CX6572-----------------------
  1685. INT 13 - FAST! v4.02+ - GET CACHE INFORMATION
  1686.     AX = 8001h
  1687.     CX = 6572h
  1688.     DX = 1970h
  1689.     ES:BX -> request packet (see #0199)
  1690. Return: AH = 00h if successful
  1691. SeeAlso: AH=80h,AX=8006h
  1692.  
  1693. Format of FAST! request packet:
  1694. Offset    Size    Description    (Table 0199)
  1695.  00h    DWORD    -> 19-byte signature string (see #0198)
  1696.  04h    DWORD    -> buffer for cache information (see #0200)
  1697.  
  1698. Format of FAST! cache information (v5.00-5.03):
  1699. Offset    Size    Description    (Table 0200)
  1700.  00h    WORD    binary version number of FAST! (v5.00 = 01F4h)
  1701.  02h    BYTE    revision letter (61h = X.XXa, 62h = X.XXb, etc.)
  1702.  03h    BYTE    FAST! variant
  1703.         (01h = FASTE, 02h = FASTX BIOS, 04h = FASTC, 20h = FASTX XMS)
  1704.  04h    DWORD    total number of read requests
  1705.  08h    DWORD    number of physical disk reads
  1706.  0Ch    DWORD    grabbed hash buckets
  1707.  10h    DWORD    "st_386mem"
  1708.  14h    DWORD    total number of writes (only counted when staging enabled)
  1709.  18h    DWORD    number of physical disk writes (only when staging enabled)
  1710.  1Ch    DWORD    number of write errors while flushing cache
  1711.  20h    WORD    flags1 (see #0201)
  1712.  22h    WORD    flags
  1713.         bit 0: ???
  1714.         bit 1: staged writes enabled
  1715.  24h    WORD    ???
  1716.  26h    WORD    maximum cache size in KB
  1717.  28h    WORD    minimum cache size in KB
  1718.  2Ah    WORD    segment of first cache buffer (FASTC)
  1719.         segment of EMS page frame (FASTE)
  1720.         XMS handle (FASTX XMS)
  1721.  2Ch    WORD    number of hash buckets containing no entries
  1722.  2Eh    WORD    number of hash buckets containing one entry
  1723.  30h    WORD    number of hash buckets containing two entries
  1724.  32h    WORD    number of hash buckets containing three entries
  1725.  34h    WORD    number of hash buckets containing four entries
  1726.  36h    WORD    number of hash buckets containing five entries
  1727.  38h    WORD    maximum contiguous sectors
  1728.  3Ah    WORD    hash factor
  1729.  3Ch    WORD    number of paragraphs of memory used below 1M
  1730.  3Eh    WORD    entries per hash bucket
  1731.  40h    WORD    idle delay in seconds
  1732.  42h  2 BYTEs    ???
  1733.  44h    WORD    staged write threshold percentage
  1734.  46h  2 BYTEs    ???
  1735.  48h    WORD    number of dirty sectors
  1736.  4Ah    WORD    number of staged write buffers
  1737.  4Ch    WORD    current cache size in KB
  1738.  4Eh    WORD    beep frequency in Hz
  1739.  50h    WORD    ???
  1740.  52h    WORD    ???
  1741.  
  1742. Bitfields for FAST! flags1:
  1743. Bit(s)    Description    (Table 0201)
  1744.  0    beep on flush
  1745.  3    hotkeys enabled
  1746.  4    mouse idle check enabled
  1747.  8    caching enabled
  1748.  13    ???
  1749. --------c-138006CX6572-----------------------
  1750. INT 13 - FAST! v4.02+ - INSTALLATION CHECK
  1751.     AX = 8006h
  1752.     CX = 6572h
  1753.     DX = 1970h
  1754.     ES:BX -> request packet (see #0202)
  1755. Return: AX = 1965h if installed
  1756. SeeAlso: AH=80h,AX=8001h,AX=8007h
  1757.  
  1758. Format of FAST! request packet:
  1759. Offset    Size    Description    (Table 0202)
  1760.  00h    DWORD    -> 19-byte signature string (see #0198)
  1761. --------c-138007CX6572-----------------------
  1762. INT 13 - FAST! v4.02+ - UNHOOK INTERRUPTS
  1763.     AX = 8007h
  1764.     CX = 6572h
  1765.     DX = 1970h
  1766.     ES:BX -> request packet (see #0203)
  1767. Return: AX = 1965h if installed
  1768. SeeAlso: AH=80h,AX=8006h
  1769. Index:    uninstall;FAST!
  1770.  
  1771. Format of FAST! request packet:
  1772. Offset    Size    Description    (Table 0203)
  1773.  00h    DWORD    -> 19-byte signature string (see #0198)
  1774. --------c-1381--SI4358-----------------------
  1775. INT 13 - Super PC-Kwik v3.20+ - ???
  1776.     AH = 81h
  1777.     SI = 4358h
  1778.     ???
  1779. Return: ???
  1780. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  1781.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  1782.       to PC-Kwik v3.20 and PC-Cache v5.5 to PC-Kwik v3.27)
  1783.     returns immediately in PC-Cache v5.x
  1784. Index:    PC-Cache|Qualitas Qcache
  1785. --------c-1382--SI4358-----------------------
  1786. INT 13 - Super PC-Kwik v3.20+ - ???
  1787.     AH = 82h
  1788.     SI = 4358h
  1789.     ???
  1790. Return: AL = ???
  1791. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  1792.       Super PC-Kwik, and thus support this call
  1793. SeeAlso: AH=84h
  1794. Index:    PC-Cache|Qualitas Qcache
  1795. --------c-1383--SI4358-----------------------
  1796. INT 13 - Super PC-Kwik v3.20+ - ???
  1797.     AH = 83h
  1798.     SI = 4358h
  1799.     AL = ???
  1800.     ES:BX -> ???
  1801.     ???
  1802. Return: ???
  1803. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  1804.       Super PC-Kwik, and thus support this call
  1805. SeeAlso: AH=85h
  1806. Index:    PC-Cache|Qualitas Qcache
  1807. --------c-1384--SI4358-----------------------
  1808. INT 13 - Super PC-Kwik v3.20+ - ???
  1809.     AH = 84h
  1810.     SI = 4358h
  1811.     AL = ???
  1812.     ???
  1813. Return: AL = ???
  1814. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  1815.       Super PC-Kwik, and thus support this call
  1816. SeeAlso: AH=82h
  1817. Index:    PC-Cache|Qualitas Qcache
  1818. --------c-1385--SI4358-----------------------
  1819. INT 13 - Super PC-Kwik v3.20+ - ???
  1820.     AH = 85h
  1821.     SI = 4358h
  1822.     AL = ???
  1823.     DL = ???
  1824.     ???
  1825. Return: ???
  1826. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  1827.       Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
  1828.       to PC-Kwik v3.20)
  1829. SeeAlso: AH=83h
  1830. Index:    PC-Cache|Qualitas Qcache
  1831. --------c-1386--SI4358-----------------------
  1832. INT 13 - Super PC-Kwik v4.00+ - ???
  1833.     AH = 86h
  1834.     SI = 4358h
  1835.     ???
  1836. Return: ???
  1837. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  1838.       thus supports this call
  1839. Index:    Qualitas Qcache
  1840. --------c-1387--SI4358-----------------------
  1841. INT 13 - Super PC-Kwik v4.00+ - ???
  1842.     AH = 87h
  1843.     SI = 4358h
  1844.     ???
  1845. Return: AH = status??? (00h)
  1846.     CX = ???
  1847.     DX = ??? (0000h)
  1848. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  1849.       thus supports this call
  1850. Index:    Qualitas Qcache
  1851. --------c-1388--SI4358-----------------------
  1852. INT 13 - Super PC-Kwik v4.00+ - ???
  1853.     AH = 88h
  1854.     SI = 4358h
  1855.     ???
  1856. Return: AH = status??? (00h)
  1857.     CX = ???
  1858.     DX = ??? (0000h)
  1859. Note:    Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
  1860.       thus supports this call
  1861. Index:    Qualitas Qcache
  1862. --------c-1389--SI4358-----------------------
  1863. INT 13 - Super PC-Kwik v5.10+ - ???
  1864.     AH = 89h
  1865.     SI = 4358h
  1866.     ???
  1867. Return: ???
  1868. --------c-138A--SI4358-----------------------
  1869. INT 13 - Super PC-Kwik v5.10+ - ???
  1870.     AH = 8Ah
  1871.     SI = 4358h
  1872.     ???
  1873. Return: ???
  1874. --------c-138EED-----------------------------
  1875. INT 13 - HyperDisk v4.01+ - ???
  1876.     AX = 8EEDh
  1877.     ???
  1878. Return: ???
  1879. Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
  1880. SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AX=DF00h
  1881. --------c-138EEE-----------------------------
  1882. INT 13 - HyperDisk v4.01+ - ???
  1883.     AX = 8EEEh
  1884. Return: CF set
  1885.     AX = CS of HyperDisk resident code
  1886.     ???
  1887. Note:    identical to AX=8EEFh in HYPERDKX v4.21-4.30
  1888. SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
  1889. --------c-138EEF-----------------------------
  1890. INT 13 - HyperDisk v4.01+ - ???
  1891.     AX = 8EEFh
  1892. Return: CF set
  1893.     AX = CS of HyperDisk resident code
  1894.     ???
  1895. Note:    identical to AX=8EEEh in HYPERDKX v4.21-4.30
  1896. SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
  1897. --------c-1392--SI4358-----------------------
  1898. INT 13 - Super PC-Kwik v5.10+ - ???
  1899.     AH = 92h
  1900.     SI = 4358h
  1901.     ???
  1902. Return: AH = status??? (00h)
  1903.     DL = ???
  1904. SeeAlso: AH=93h
  1905. --------c-1393--SI4358-----------------------
  1906. INT 13 - Super PC-Kwik v5.10+ - ???
  1907.     AH = 93h
  1908.     SI = 4358h
  1909.     ???
  1910. Return: AH = status??? (00h)
  1911.     AL = ???
  1912. SeeAlso: AH=92h
  1913. --------c-1394--SI4358-----------------------
  1914. INT 13 - Super PC-Kwik v5.10+ - ???
  1915.     AH = 94h
  1916.     SI = 4358h
  1917.     ???
  1918. Return: ???
  1919. --------c-1395--SI4358-----------------------
  1920. INT 13 - Super PC-Kwik v5.10+ - ???
  1921.     AH = 95h
  1922.     SI = 4358h
  1923.     ???
  1924. Return: AH = status??? (00h)
  1925.     DX = ???
  1926. --------c-1396--SI4358-----------------------
  1927. INT 13 - Super PC-Kwik v5.10+ - ???
  1928.     AH = 96h
  1929.     SI = 4358h
  1930.     AL = ??? (01h)
  1931.     BX = ??? (0790h)
  1932.     DL = ???
  1933. Return: AH = status??? (00h)
  1934.     DX = ???
  1935. --------c-1397--SI4358-----------------------
  1936. INT 13 - Super PC-Kwik v5.10+ - ???
  1937.     AH = 97h
  1938.     SI = 4358h
  1939.     ???
  1940. Return: ???
  1941. --------c-1398--SI4358-----------------------
  1942. INT 13 - Super PC-Kwik v5.10+ - ???
  1943.     AH = 98h
  1944.     SI = 4358h
  1945.     ???
  1946. Return: ???
  1947. --------c-1399--SI4358-----------------------
  1948. INT 13 - Super PC-Kwik v5.10+ - ???
  1949.     AH = 99h
  1950.     SI = 4358h
  1951.     ???
  1952. Return: ???
  1953. --------c-139A--SI4358-----------------------
  1954. INT 13 - Super PC-Kwik v5.10+ - ???
  1955.     AH = 9Ah
  1956.     SI = 4358h
  1957.     ???
  1958. Return: ???
  1959. --------c-139B--SI4358-----------------------
  1960. INT 13 - Super PC-Kwik v5.10+ - ???
  1961.     AH = 9Bh
  1962.     SI = 4358h
  1963.     ???
  1964. Return: ???
  1965. --------c-139C--SI4358-----------------------
  1966. INT 13 - Super PC-Kwik v5.10+ - ???
  1967.     AH = 9Ch
  1968.     SI = 4358h
  1969.     ???
  1970. Return: ???
  1971. Note:    functions 9Ch and 9Dh are the only ones which are fully reentrant; all
  1972.       other PC-Kwik API calls (INT 13/81h-B0h) return AX=0200h and CF clear
  1973.       if a previous call is still in progress
  1974. --------c-139D--SI4358-----------------------
  1975. INT 13 - Super PC-Kwik v5.10+ - ???
  1976.     AH = 9Dh
  1977.     SI = 4358h
  1978.     ???
  1979. Return: ???
  1980. --------c-13A0--SI4358-----------------------
  1981. INT 13 - Super PC-Kwik v3.20+ - GET RESIDENT CODE SEGMENT
  1982.     AH = A0h
  1983.     SI = 4358h
  1984. Return: AX = segment of resident code
  1985. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  1986.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.5
  1987.       corresponds to PC-Kwik v3.27)
  1988. SeeAlso: INT 16/AX=FFA5h/CX=1111h
  1989. Index:    PC-Cache|Qualitas Qcache
  1990. --------c-13A1--SI4358-----------------------
  1991. INT 13 - Super PC-Kwik v3.20+ - FLUSH CACHE
  1992.     AH = A1h
  1993.     SI = 4358h
  1994. Return: CF clear
  1995.     AH = 00h (v5.10)
  1996. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  1997.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  1998.       corresponds to PC-Kwik v3.20)
  1999. SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
  2000. Index:    PC-Cache|Qualitas Qcache
  2001. --------c-13A2--SI4358-----------------------
  2002. INT 13 - Super PC-Kwik v3.20+ - ???
  2003.     AH = A2h
  2004.     SI = 4358h
  2005.     ???
  2006. Return: ???
  2007. Note:    PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
  2008.       Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
  2009.       corresponds to PC-Kwik v3.20)
  2010. Index:    PC-Cache|Qualitas Qcache
  2011. --------c-13A3--SI4358-----------------------
  2012. INT 13 U - Super PC-Kwik v5.10+ - DISABLE CACHE
  2013.     AH = A3h
  2014.     SI = 4358h
  2015. Return: CF clear
  2016. SeeAlso: AH=A4h
  2017. --------c-13A4--SI4358-----------------------
  2018. INT 13 U - Super PC-Kwik v5.10+ - ENABLE CACHE
  2019.     AH = A4h
  2020.     SI = 4358h
  2021. Return: CF clear
  2022. SeeAlso: AH=A3h
  2023. --------c-13A5--SI4358-----------------------
  2024. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM TERMINATION NOTIFICATION
  2025.     AH = A5h
  2026.     SI = 4358h
  2027. Return: AX = ???
  2028.     SI = ???
  2029. Notes:    called and used internally by Super PC-Kwik when a program terminates
  2030.       via INT 21/AH=00h, INT 21/AH=31h, or INT 21/AH=4Ch
  2031.     this call is not supported by Qualitas Qcache 4.00
  2032. Index:    PC-Cache
  2033. SeeAlso: AH=A6h,AH=A9h,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch
  2034. --------c-13A6--SI4358-----------------------
  2035. INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM LOAD NOTIFICATION
  2036.     AH = A6h
  2037.     SI = 4358h
  2038.     DS:DX -> ASCIZ program name
  2039.     ES:BX -> EXEC data block (see #0931 at INT 21/AH=4Bh)
  2040. Return: ???
  2041. Note:    called and used internally by Super PC-Kwik when a program is loaded
  2042.       with INT 21/AX=4B00h
  2043. SeeAlso: AH=A5h,AH=A9h,INT 21/AH=4Bh
  2044. --------c-13A7--SI4358-----------------------
  2045. INT 13 CU - Super PC-Kwik 5.1 - ???
  2046.     AH = A7h
  2047.     SI = 4358h
  2048. Return: ???
  2049. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  2050. SeeAlso: AH=A5h,AH=A6h,AH=A8h
  2051. --------v-13A759-----------------------------
  2052. INT 13 U - Novell DOS 7 - SDRes v27.03 - ???
  2053.     AX = A759h
  2054. Return: AX = 59A7h if installed
  2055.         DX:BX -> ??? data
  2056. Program: SDRes is the resident portion of the Search&Destroy antiviral by
  2057.       Fifth Generation Systems, as bundled with Novell DOS 7
  2058. SeeAlso: INT 21/AH=0Eh/DL=ADh
  2059. --------c-13A8--SI4358-----------------------
  2060. INT 13 CU - Super PC-Kwik 5.1 - ???
  2061.     AH = A8h
  2062.     SI = 4358h
  2063. Return: ???
  2064. Note:    called and used internally by Super PC-Kwik on some INT 21 calls
  2065. SeeAlso: AH=A5h,AH=A6h,AH=A7h
  2066. --------c-13A9--SI4358-----------------------
  2067. INT 13 CU - Super PC-Kwik 5.1 - EXITCODE RETRIEVAL NOTIFICATION
  2068.     AH = A9h
  2069.     SI = 4358h
  2070. Return: ???
  2071. Note:    called and used internally by Super PC-Kwik when an application issues
  2072.       INT 21/AH=4Dh
  2073. SeeAlso: AH=A5h,AH=A6h,INT 21/AH=4Dh
  2074. --------c-13AA--SI4358-----------------------
  2075. INT 13 - Super PC-Kwik v4+ - ???
  2076.     AH = AAh
  2077.     SI = 4358h
  2078.     ???
  2079. Return: ???
  2080. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  2081.       this call
  2082. --------c-13AB--SI4358-----------------------
  2083. INT 13 - Super PC-Kwik v4+ - ???
  2084.     AH = ABh
  2085.     SI = 4358h
  2086.     ???
  2087. Return: ???
  2088. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  2089.       this call
  2090. --------c-13AC--SI4358-----------------------
  2091. INT 13 - Super PC-Kwik v4+ - ???
  2092.     AH = ACh
  2093.     SI = 4358h
  2094.     ???
  2095. Return: ???
  2096. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  2097.       this call
  2098. --------d-13AD-------------------------------
  2099. INT 13 - Priam HARD DISK CONTROLLER???
  2100.     AH = ADh
  2101.     ???
  2102. Return: ???
  2103. Note:    this call is made from Priam's EFMT.EXE (low-level formatter), probably
  2104.       to check the ROM type on the controller for their hard disk kits
  2105. SeeAlso: AH=70h
  2106. --------c-13AD--SI4358-----------------------
  2107. INT 13 - Super PC-Kwik v4+ - ???
  2108.     AH = ADh
  2109.     SI = 4358h
  2110.     ???
  2111. Return: ???
  2112. Note:    Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
  2113.       this call
  2114. --------c-13AE--SI4358-----------------------
  2115. INT 13 - Super PC-Kwik v5.10+ - ???
  2116.     AH = AEh
  2117.     SI = 4358h
  2118.     ???
  2119. Return: ???
  2120. --------c-13B0--SI4358-----------------------
  2121. INT 13 - Super PC-Kwik v3.20+ - ???
  2122.     AH = B0h
  2123.     SI = 4358h
  2124.     ???
  2125. Return: ???
  2126. Note:    PC Tools PC-Cache 5.x is an OEM version of Super PC-Kwik, and thus
  2127.       supports this call; Qualitas Qcache does not support it
  2128. Index:    PC-Cache
  2129. --------v-13EC00-----------------------------
  2130. INT 13 - VIRUS - "Tiso" - INSTALLATION CHECK
  2131.     AX = EC00h
  2132. Return: CF clear if installed
  2133. SeeAlso: AH=F2h,INT 12/AX=4350h/BX=4920h
  2134. --------d-13EE-------------------------------
  2135. INT 13 - SWBIOS - SET 1024-CYLINDER FLAG
  2136.     AH = EEh
  2137.     DL = drive number (80h, 81h)
  2138. Return: CF clear
  2139.        AH = 00h
  2140. Program: SWBIOS is a TSR by Ontrack Computer Systems
  2141. Desc:    the following INT 13 call will add 1024 to the specified cylinder
  2142.       number to get the actual cylinder number desired
  2143. Notes:    the flag is cleared by all INT 13 calls except AH=EEh and AH=EFh
  2144.     Disk Manager also supports these calls
  2145.     this function is also supported by HyperDisk v4.01+ and PC-Cache v5.5+,
  2146.       in order to allow caching of drives using SWBIOS to access more than
  2147.       1024 cylinders
  2148.     for software which supports that call, this function is equivalent to
  2149.       calling AH=EFh with CX=0400h
  2150. SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AH=DFh
  2151. Index:    PC-Cache;huge disks|Disk Manager
  2152. --------c-13EF-------------------------------
  2153. INT 13 - Ontrack Drive Rocket - SET CYLINDER OFFSET
  2154.     AH = EFh
  2155.     CX = cylinder offset for next INT 13 call
  2156.     DL = drive number (80h, 81h)
  2157. Return: CF clear
  2158.         AH = 00h
  2159. Program: Drive Rocket is a drive accelerator by Ontrack Computer Systems for
  2160.       IDE drives supporting the read multiple and write multiple commands
  2161. Desc:    the following INT 13 call will add the number given by this call to
  2162.       the specified cylinder to get the actual cylinder number, then reset
  2163.       the offset to zero
  2164. Note:    this function is also supported by the NOW! disk cache, and presumably
  2165.       newer versions of SWBIOS and Disk Manager
  2166.     for software which supports this call, AH=EEh is equivalent to calling
  2167.       this function with CX=0400h
  2168.     the cylinder offset is reset to 0 by all INT 13 called except AH=EEh
  2169.       and AH=EFh
  2170. SeeAlso: AX=7B00h
  2171. --------v-13F2-------------------------------
  2172. INT 13 - VIRUS - "Neuroquila" - INSTALLATION CHECK
  2173.     AH = F2h
  2174. Return: CF ??? if installed
  2175. SeeAlso: AX=EC00h,INT 12/AX=4350h/BX=4920h,INT 21/AX=0B56h
  2176. --------d-13F9-------------------------------
  2177. INT 13 - SWBIOS - INSTALLATION CHECK
  2178.     AH = F9h
  2179.     DL = drive number (80h,81h)
  2180. Return: CF clear
  2181.         DX = configuration word
  2182.         bit 15 set if other SWBIOS extensions available
  2183.     CF set on error
  2184. Program: SWBIOS is a TSR by Ontrack Computer Systems
  2185. Note:    Disk Manager also supports these calls
  2186. SeeAlso: AH=EEh
  2187. Index:    Disk Manager
  2188. --------v-13FA--DX5945-----------------------
  2189. INT 13 - PC Tools v8+ VSAFE, VWATCH - API
  2190.     AH = FAh
  2191.     DX = 5945h
  2192.     AL = function (00h-07h)
  2193. Return: varies by function
  2194.     if not installed:
  2195.         CF set
  2196.         AH = 01h
  2197. Note:    this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh,
  2198.       so it is listed in its entirety under INT 16/AX=FA00h and following
  2199. SeeAlso: INT 16/AX=FA00h
  2200. --------v-13FD50------------------------
  2201. INT 13 - VIRUS - "Predator" - INSTALLATION CHECK
  2202.     AX = FD50h
  2203. Return: AX = 50FDh if resident
  2204. SeeAlso: AX=5001h"VIRUS",INT 16/AH=DDh"VIRUS"
  2205. --------d-13FE-------------------------------
  2206. INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
  2207.     AH = FEh
  2208.     DL = drive number (80h, 81h)
  2209. Return: CF clear
  2210.     DX = number of cylinders beyond 1024 on drive
  2211. Program: SWBIOS is a TSR by Ontrack Computer Systems
  2212. Notes:    standard INT 13/AH=08h will return a cylinder count truncated to 1024
  2213.     BIOS without this extension would return count modulo 1024
  2214.     Disk Manager also supports these calls
  2215. SeeAlso: AH=EEh
  2216. ----------13FF-------------------------------
  2217. INT 13 - Windows95 - ???
  2218.     AH = FFh
  2219.     DL - drive number (80h)
  2220. Return: ???
  2221. Note:    this function is called by the Windows95 Master Boot Record
  2222. --------U-13FFFFBHAA-------------------------
  2223. INT 13 - UNIQUE UX Turbo Utility - SET TURBO MODE
  2224.     AX = FFFFh
  2225.     BH = AAh
  2226.     BL = subfunction
  2227.         00h installation check
  2228.         Return: AX = 1234h if installed
  2229.         01h turn on Turbo mode
  2230.         02h turn off Turbo mode
  2231.         03h set Turbo mode according to hardware switch
  2232.         04h set disk access to Turbo mode
  2233.         05h set disk access to Normal mode
  2234. Return: nothing
  2235. SeeAlso: INT 15/AH=DFh
  2236. Index:    installation check;UNIQUE UX Turbo Utility
  2237. --------S-14---------------------------------
  2238. INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
  2239. Note:    the installation check for this driver is to determine whether the
  2240.       "~DOSXAM~" character device exists
  2241. Index:    installation check;Digiboard DigiCHANNEL
  2242. --------S-1400-------------------------------
  2243. INT 14 - SERIAL - INITIALIZE PORT
  2244.     AH = 00h
  2245.     AL = port parameters (see #0204)
  2246.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  2247. Return: AH = line status (see #0208)
  2248.         FFh if error on Digiboard XAPCM232.SYS
  2249.     AL = modem status (see #0209)
  2250. Notes:    default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
  2251.     since the PCjr supports a maximum of 4800 bps, attempting to set 9600
  2252.       bps will result in 4800 bps
  2253.     various network and serial-port drivers support the standard BIOS
  2254.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  2255.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  2256. SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AH=57h
  2257. SeeAlso: AX=8000h"ARTICOM",AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch
  2258. SeeAlso: MEM 0040h:0000h,PORT 03F8h"Serial"
  2259.  
  2260. Bitfields for serial port parameters:
  2261. Bit(s)    Description    (Table 0204)
  2262.  7-5    data rate (110,150,300,600,1200,2400,4800,9600 bps)
  2263.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  2264.  2    stop bits (set = 2, clear = 1)
  2265.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  2266. SeeAlso: #0206,#0211,#0212,#0213
  2267. --------S-1400-------------------------------
  2268. INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
  2269.     AH = 00h
  2270.     AL = initializing parameters
  2271.         7 - 6 - 5       4 - 3     2      1 - 0
  2272.         -BAUD RATE-       PARITY   STOP   WORD
  2273.                     BITS  LENGTH
  2274.         000 19200 bd   00 none  0: 1  00: 5
  2275.         001 38400 bd   01 odd   1: 2  01: 6
  2276.         010      300 bd   11 even      10: 7
  2277.         011      600 bd          11: 8
  2278.         100     1200 bd
  2279.         101     2400 bd
  2280.         110     4800 bd
  2281.         111     9600 bd (4800 on PCjr)
  2282.     DX = port number (0-3 or FFh if only performing non-I/O setup)
  2283. Return: AH = RS-232 status code bits (see #0205)
  2284.     AL = modem status bits
  2285.         bit 3: always 1
  2286.         bit 7: DCD - carrier detect
  2287. SeeAlso: #0204,AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
  2288.  
  2289. Bitfields for FOSSIL RS-232 status:
  2290. Bit(s)    Description    (Table 0205)
  2291.  0    RDA - input data is available in buffer
  2292.  1    OVRN - data has been lost
  2293.  5    THRE - room is available in output buffer
  2294.  6    TSRE - output buffer empty
  2295. --------S-1400-------------------------------
  2296. INT 14 - Tandy 2000 - SERIAL - RESET COMM PORT
  2297.     AH = 00h
  2298.     AL = RS-232C parameters (see #0206)
  2299.     DL = port number
  2300.     DH = protocol
  2301.         bit 0: use XON/XOFF on received data
  2302.         bit 1: use XON/XOFF when transmitting
  2303. Return: AH = line status (see #0208)
  2304.     AL = modem status (see #0209)
  2305. Note:    this interrupt is identical to INT 53 on the Tandy 2000
  2306. SeeAlso: AH=04h"Tandy 2000",INT 53"Tandy 2000"
  2307. --------S-1400-------------------------------
  2308. INT 14 - MBBIOS - INITIALIZE PORT
  2309.     AH = 00h
  2310.     AL = port parameters (see #0206)
  2311.     DX = port number
  2312. Return: AH = line status (see #0208)
  2313.     AL = modem status (see #0209)
  2314. Note:    MBBIOS was written by H. Roy Engehausen
  2315. SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS",AH=09h"MBBIOS"
  2316.  
  2317. Bitfields for MBBIOS port parameters:
  2318. Bit(s)    Description    (Table 0206)
  2319.  7-5    data rate
  2320.     (normally 110,150,300,600,1200,2400,4800,9600 bps;
  2321.     9600,14400,19200,28800,38400,57600,115200,330400 bps
  2322.     if the high-speed option is set)
  2323.  4-3    parity (00 or 10 = none, 01 = odd, 11 = even)
  2324.  2    stop bits (set = 2, clear = 1)
  2325.  1-0    data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
  2326. SeeAlso: #0204
  2327. --------N-1400--DXFFFF-----------------------
  2328. INT 14 - Connection Manager - MODIFY DEFAULT CONNECTION PARAMETERS
  2329.     AH = 00h
  2330.     DX = FFFFh
  2331.     ES:DI -> vector string specifying new parameters
  2332. Return: AH = return code (00h,03h) (see #0207)
  2333. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2334.       serial ports over an IPX or NetBIOS-based network
  2335. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  2336.       function, but redirects the port over the network; if DX is any other
  2337.       value, the call is chained
  2338. SeeAlso: AH=04h/DX=FFFFh,AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  2339.  
  2340. (Table 0207)
  2341. Values for Connection Manager return code:
  2342.  00h    successful
  2343.  01h    no such connection
  2344.  02h    invalid connection ID
  2345.  03h    invalid subvector found
  2346.  04h    communication error (check BH)
  2347.  06h    insufficient resources, retry later
  2348.  FFh    no data available
  2349. --------S-1401-------------------------------
  2350. INT 14 - SERIAL - WRITE CHARACTER TO PORT
  2351.     AH = 01h
  2352.     AL = character to write
  2353.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  2354. Return: AH bit 7 clear if successful
  2355.     AH bit 7 set on error
  2356.     AH bits 6-0 = port status (see #0208)
  2357. Notes:    various network and serial-port drivers support the standard BIOS
  2358.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  2359.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  2360. SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h
  2361. --------N-1401--DXFFFF-----------------------
  2362. INT 14 - Connection Manager - SEND CHARACTER
  2363.     AH = 01h
  2364.     DX = FFFFh
  2365.     BH = character to send
  2366. Return: AH = return code (00h-02h,06h) (see #0207)
  2367. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  2368.       function, but redirects the port over the network; if DX is any other
  2369.       value, the call is chained
  2370.     this function is provided primarily for compatibility; AH=06h/DX=FFFFh
  2371.       is the preferred function because it provides better performance
  2372. SeeAlso: AH=02h/DX=FFFFh,AH=06h/DX=FFFFh,AH=09h/DX=FFFFh
  2373. --------S-1402-------------------------------
  2374. INT 14 - SERIAL - READ CHARACTER FROM PORT
  2375.     AH = 02h
  2376.     AL = 00h (ArtiCom)
  2377.     DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
  2378. Return: AH = line status (see #0208)
  2379.     AL = received character if AH bit 7 clear
  2380. Notes:    will timeout if DSR is not asserted, even if function 03h returns
  2381.       data ready
  2382.     various network and serial-port drivers support the standard BIOS
  2383.       functions with interrupt-driven I/O instead of the BIOS's polled I/O
  2384.     the 04/08/93 Compaq system ROM uses only the low two bits of DX
  2385. SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
  2386. --------S-1402-------------------------------
  2387. INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
  2388.     AH = 02h
  2389.     DX = port number (0-3)
  2390. Return: AL = character received
  2391.     AH = 00h
  2392. SeeAlso: AH=01h,AH=02h"SERIAL"
  2393. --------N-1402--DXFFFF-----------------------
  2394. INT 14 - Connection Manager - RECEIVE CHARACTER
  2395.     AH = 02h
  2396.     DX = FFFFh
  2397.     BH = character to send
  2398. Return: AH = return code (00h-02h,04h,FFh) (see #0207)
  2399.     BH = line status (see #0208)
  2400.     AL = received character (if any)
  2401. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  2402.       function, but redirects the port over the network; if DX is any other
  2403.       value, the call is chained
  2404.     this function is provided primarily for compatibility; AH=07h/DX=FFFFh
  2405.       is the preferred function because it provides better performance
  2406. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh,AH=06h/DX=FFFFh
  2407. --------S-1403-------------------------------
  2408. INT 14 - SERIAL - GET PORT STATUS
  2409.     AH = 03h
  2410.     AL = 00h (ArtiCom)
  2411.     DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
  2412. Return: AH = line status (see #0208)
  2413.     AL = modem status (see #0209)
  2414.     AX = 9E00h if disconnected (ArtiCom)
  2415. Note:    the 04/08/93 Compaq system ROM uses only the low two bits of DX
  2416. SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
  2417.  
  2418. Bitfields for serial line status:
  2419. Bit(s)    Description    (Table 0208)
  2420.  7    timeout
  2421.  6    transmit shift register empty
  2422.  5    transmit holding register empty
  2423.  4    break detected
  2424.  3    framing error
  2425.  2    parity error
  2426.  1    overrun error
  2427.  0    receive data ready
  2428. Note:    for COMM-DRV, if bit 7 is set, an error occurred, and may be retrieved
  2429.       through a separate call (see AX=8000h"COMM-DRV")
  2430.  
  2431. Bitfields for modem status:
  2432. Bit(s)    Description    (Table 0209)
  2433.  7    carrier detect
  2434.  6    ring indicator
  2435.  5    data set ready
  2436.  4    clear to send
  2437.  3    delta carrier detect
  2438.  2    trailing edge of ring indicator
  2439.  1    delta data set ready
  2440.  0    delta clear to send
  2441. --------N-1403--DXFFFF-----------------------
  2442. INT 14 - Connection Manager - RETURN COMMUNICATION PORT STATUS
  2443.     AH = 03h
  2444.     DX = FFFFh
  2445.     AL = connection ID
  2446. Return: AH = return code (00h-02h) (see #0207)
  2447.     BH = line status (see #0210)
  2448.     BL = modem status (see #0209) (only bits 4,5,7; all others zero)
  2449. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  2450.       function, but redirects the port over the network; if DX is any other
  2451.       value, the call is chained
  2452. SeeAlso: AH=00h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Ah/DX=FFFFh
  2453.  
  2454. Bitfields for Connection Manager line status:
  2455. Bit(s)    Description    (Table 0210)
  2456.  7    CTS changed
  2457.  6    current CTS state
  2458.  5    timeout
  2459.  4    break
  2460.  3    framing error
  2461.  2    parity error
  2462.  1    overrun
  2463.  0    current carrier state (0 active, 1 no carrier)
  2464. --------S-1404-------------------------------
  2465. INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS)
  2466.     AH = 04h
  2467.     AL = break status
  2468.         00h if break
  2469.         01h if no break
  2470.     BH = parity (see #0211)
  2471.     BL = number of stop bits
  2472.         00h one stop bit
  2473.         01h two stop bits (1.5 if 5 bit word length)
  2474.     CH = word length (see #0212)
  2475.     CL = bps rate (see #0213)
  2476.     DX = port number
  2477. Return: AX = port status code (see #0208,#0209)
  2478. SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
  2479.  
  2480. (Table 0211)
  2481. Values for serial port parity:
  2482.  00h    no parity
  2483.  01h    odd parity
  2484.  02h    even parity
  2485.  03h    stick parity odd
  2486.  04h    stick parity even
  2487. SeeAlso: #0204,#0212,#0213,#0214
  2488.  
  2489. (Table 0212)
  2490. Values for serial port word length:
  2491.  00h    5 bits
  2492.  01h    6 bits
  2493.  02h    7 bits
  2494.  03h    8 bits
  2495. SeeAlso: #0204,#0211,#0213,#0249
  2496.  
  2497. (Table 0213)
  2498. Values for serial port bps rate:
  2499.  00h    110 (19200 if ComShare installed)
  2500.  01h    150 (38400 if ComShare installed)
  2501.  02h    300
  2502.  03h    600 (14400 if ComShare installed)
  2503.  04h    1200
  2504.  05h    2400
  2505.  06h    4800 (28800 if ComShare installed)
  2506.  07h    9600
  2507.  08h    19200
  2508. ---ComShare---
  2509.  09h    38400
  2510.  0Ah    57600
  2511.  0Bh    115200
  2512. SeeAlso: #0204,#0211,#0213,#0250,#0257,AH=36h,#0268,#0503,#2201
  2513. --------S-1404-------------------------------
  2514. INT 14 - Tandy 2000 - SERIAL - FLUSH COMM BUFFER
  2515.     AH = 04h
  2516.     DL = port number
  2517.     DH = protocol
  2518.         bit 0: use XON/XOFF on received data
  2519.         bit 1: use XON/XOFF when transmitting
  2520. Return: nothing
  2521. Desc:    clears the serial interface buffer
  2522. Note:    this interrupt is identical to INT 53 on the Tandy 2000
  2523. SeeAlso: AH=00h"Tandy 2000",INT 53"Tandy 2000"
  2524. --------S-1404-------------------------------
  2525. INT 14 - FOSSIL - INITIALIZE DRIVER
  2526.     AH = 04h
  2527.     DX = port number
  2528.     optionally BX=4F50h
  2529.            ES:CX -> byte to be set upon ^C
  2530. Return: AX = 1954h (if successful)
  2531.     BL = maximum function number supported (excluding 7Eh and above)
  2532.     BH = revision of FOSSIL specification supported
  2533.     DTR is raised
  2534. Note:    the word at offset 6 in the interrupt handler contains 1954h, and the
  2535.       following byte contains the maximum function number supported; this
  2536.       can serve as an installation check
  2537. SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh
  2538. Index:    installation check;FOSSIL
  2539. --------S-1404-------------------------------
  2540. INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
  2541.     AH = 04h
  2542. Return: port initialized; if Hayes-compatible modem, a connection has been
  2543.       established
  2544. Note:    the port number is stored at offset BEh in the Task Control Block
  2545.       (see #0360 at INT 15/AH=13h"MultiDOS")
  2546. SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
  2547. --------S-1404-------------------------------
  2548. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
  2549.     AH = 04h
  2550.     AL = initializing parameters (see #0214)
  2551.     BX = baud rate
  2552.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2553. Return: AH = status
  2554.         00h successful
  2555.         FFh error
  2556. SeeAlso: AH=05h"Digiboard"
  2557.  
  2558. Bitfields for Digiboard initializing parameters:
  2559. Bit(s)    Description    (Table 0214)
  2560.  7-5    unused
  2561.  4-3    parity (00 none, 01 odd, 11 even)
  2562.  2    stop bits (0 = one, 1 = two)
  2563.  1-0    data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
  2564. SeeAlso: #0211,#0212
  2565. --------S-1404-------------------------------
  2566. INT 14 - MBBIOS - INSTALLATION CHECK
  2567.     AH = 04h
  2568.     DX = port number
  2569. Return: AX = AA55h if installed on specified port
  2570. SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
  2571. --------N-1404--DXFFFF-----------------------
  2572. INT 14 - Connection Manager - OPEN COMMUNICATION
  2573.     AH = 04h
  2574.     DX = FFFFh
  2575.     ES:DI -> Connection Request protocol vector (see #0215)
  2576. Return: AH = return code
  2577.         00h successful
  2578.         AL = connection ID
  2579.         BH = connection type
  2580.             00h direct connection or no dialing
  2581.             01h Connection Server dialed phone
  2582.         01h no response from Connection Server
  2583.         03h invalid request
  2584. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2585.       serial ports over an IPX or NetBIOS-based network
  2586. Desc:    initiate a connection to the Connection Server listed in the current
  2587.       Client parameter set
  2588. Notes:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  2589.       function, but redirects the port over the network; if DX is any other
  2590.       value, the call is chained
  2591.     all subvectors of the Connection Request vector are optional; if
  2592.       missing, default values are provided by the default connection
  2593.       parameter set
  2594. SeeAlso: AH=00h/DX=FFFFh,AH=05h/DX=FFFFh,AH=06h/DX=FFFFh,AH=07h/DX=FFFFh
  2595. SeeAlso: AH=0Ah/DX=FFFFh,AH=0Ch/DX=FFFFh
  2596.  
  2597. Format of Connection Manager protocol command vector:
  2598. Offset    Size    Description    (Table 0215)
  2599.  00h    WORD    (big-endian) total length of command (including this word)
  2600.  02h    WORD    (big-endian) command code
  2601.         EF01h Connection Request
  2602.         EF06h Modify Connection Parameters
  2603.  04h  N BYTEs    list of subvectors (see #0217)
  2604.         allowable subvector types are 01h-04h,17h,18h for command code
  2605.           EF01h; 03h,04h for command code EF06h (see #0216)
  2606.  
  2607. (Table 0216)
  2608. Values for Connection Manager subvector type code:
  2609.  01h    Connection ID
  2610.  02h    Destination ID
  2611.  03h    Asynchronous line parameters
  2612.  04h    Data transfer parameters
  2613.  09h    Line speed
  2614.  0Ah    Serial coding
  2615.  0Bh    Packet size
  2616.  0Ch    Timers
  2617.  0Dh    Special characters
  2618.  0Eh    Target ID
  2619.  0Fh    Telephone number
  2620.  10h    ASCII destination ID
  2621.  11h    Parity
  2622.  12h    Bits per character
  2623.  13h    Number of stop bits
  2624.  14h    Packet timer
  2625.  15h    Intercharacter timer
  2626.  17h    Flags
  2627.  18h    Parameter ranges
  2628.  19h    Flow control
  2629.  
  2630. Format of Connection Manager subvector:
  2631. Offset    Size    Description    (Table 0217)
  2632.  00h    BYTE    length of subvector
  2633.  01h    BYTE    type code (see #0216)
  2634.  02h N-2 BYTEs    data, which may include subvectors
  2635. SeeAlso: #0218,#0219,#0220,#0221,#0222,#0223,#0224,#0225,#0226,#0227,#0228
  2636. SeeAlso: #0229,#0230,#0232,#0233,#0234,#0235,#0236,#0237,#0215
  2637.  
  2638. Format of Connection ID subvector:
  2639. Offset    Size    Description    (Table 0218)
  2640.  00h    BYTE    03h (length)
  2641.  01h    BYTE    01h (subvector "Connection ID")
  2642.  02h    BYTE    connection ID
  2643. SeeAlso: #0217
  2644.  
  2645. Format of Destination ID subvector:
  2646. Offset    Size    Description    (Table 0219)
  2647.  00h    BYTE    length
  2648.  01h    BYTE    02h (subvector "Destination ID")
  2649.  02h  N BYTEs    subvector(s) of type 0Eh, 0Fh, or 10h
  2650. SeeAlso: #0217
  2651.  
  2652. Format of Asynchronous line parameters subvector:
  2653. Offset    Size    Description    (Table 0220)
  2654.  00h    BYTE    length
  2655.  01h    BYTE    03h (subvector "Asynchronous line parameters")
  2656.  02h  N BYTEs    subvector(s) of type 09h, 0Ah, or 19h
  2657. SeeAlso: #0217
  2658.  
  2659. Format of Data transfer parameters subvector:
  2660. Offset    Size    Description    (Table 0221)
  2661.  00h    BYTE    length
  2662.  01h    BYTE    04h (subvector "Data transfer parameters")
  2663.  02h  N BYTEs    subvector(s) of type 0Bh, 0Ch, or 0Dh
  2664. SeeAlso: #0217
  2665.  
  2666. Format of Line speed subvector:
  2667. Offset    Size    Description    (Table 0222)
  2668.  00h    BYTE    04h (length)
  2669.  01h    BYTE    09h (subvector "Line speed")
  2670.  02h    WORD    bit map, highest set bit selects speed
  2671.         bit 0: 2400
  2672.         bits 1-7: 1800, 1200, 600, 300, 115200, 150, 110 bps
  2673.         bits 8-15: 57600, 38400, 19200, 14400, 9600, 7200, 4800, 3600
  2674. SeeAlso: #0217
  2675.  
  2676. Format of Serial coding subvector:
  2677. Offset    Size    Description    (Table 0223)
  2678.  00h    BYTE    length
  2679.  01h    BYTE    0Ah (subvector "Serial coding")
  2680.  02h  N BYTEs    subvector(s) of type 11h, 12h, or 13h
  2681. SeeAlso: #0217
  2682.  
  2683. Format of Packet size subvector:
  2684. Offset    Size    Description    (Table 0224)
  2685.  00h    BYTE    04h (length)
  2686.  01h    BYTE    0Bh (subvector "Packet size")
  2687.  02h    WORD    (big-endian) packet size, 1 to 1024
  2688. SeeAlso: #0217
  2689.  
  2690. Format of Timers subvector:
  2691. Offset    Size    Description    (Table 0225)
  2692.  00h    BYTE    length
  2693.  01h    BYTE    0Ch (subvector "Timers")
  2694.  02h  8 BYTEs    subvector of type 14h or 15h
  2695. SeeAlso: #0217
  2696.  
  2697. Format of Special characters subvector:
  2698. Offset    Size    Description    (Table 0226)
  2699.  00h    BYTE    length
  2700.  01h    BYTE    0Dh (subvector "Special characters")
  2701.  02h  N BYTEs    list of ASCII characters to be used as EOM or EOB
  2702. SeeAlso: #0217
  2703.  
  2704. Format of Target ID:
  2705. Offset    Size    Description    (Table 0227)
  2706.  00h    BYTE    length
  2707.  01h    BYTE    0Eh (subvector "Target ID")
  2708.  02h  N BYTEs    target ID, 1-16 bytes
  2709. SeeAlso: #0217
  2710.  
  2711. Format of Telephone number subvector:
  2712. Offset    Size    Description    (Table 0228)
  2713.  00h    BYTE    length
  2714.  01h    BYTE    0Fh (subvector "Telephone number")
  2715.  02h  N BYTEs    telephone number
  2716. SeeAlso: #0217
  2717.  
  2718. Format of ASCII destination ID subvector:
  2719. Offset    Size    Description    (Table 0229)
  2720.  00h    BYTE    length
  2721.  01h    BYTE    10h (subvector "ASCII destination ID")
  2722.  02h  N BYTEs    destination ID
  2723. SeeAlso: #0217
  2724.  
  2725. Format of Parity subvector:
  2726. Offset    Size    Description    (Table 0230)
  2727.  00h    BYTE    03h (length)
  2728.  01h    BYTE    11h (subvector "Parity")
  2729.  02h    BYTE    parity type (see #0231)
  2730. SeeAlso: #0217
  2731.  
  2732. Bitfields for Connection Manager parity type:
  2733. Bit(s)    Description    (Table 0231)
  2734.  7    odd
  2735.  6    even
  2736.  5    mark
  2737.  4    space
  2738.  3    none
  2739. SeeAlso: #0230
  2740.  
  2741. Format of Bits per character subvector:
  2742. Offset    Size    Description    (Table 0232)
  2743.  00h    BYTE    03h (length)
  2744.  01h    BYTE    12h (subvector "Bits per character")
  2745.  02h    BYTE    bits per character
  2746.         bit 7: seven
  2747.         bit 6: eight
  2748. SeeAlso: #0217
  2749.  
  2750. Format of Number of stop bits subvector:
  2751. Offset    Size    Description    (Table 0233)
  2752.  00h    BYTE    03h (length)
  2753.  01h    BYTE    13h (subvector "Number of stop bits")
  2754.  02h    BYTE    stop bits
  2755.         bit 7: one
  2756.         bit 6: 1.5
  2757.         bit 5: two
  2758. SeeAlso: #0217
  2759.  
  2760. Format of Packet timer and Intercharacter timer subvectors:
  2761. Offset    Size    Description    (Table 0234)
  2762.  00h    BYTE    04h (length)
  2763.  01h    BYTE    subvector type
  2764.         14h Packet timer
  2765.         15h Intercharacter timer
  2766.  02h    WORD    (big-endian) unit of value representing 20ms
  2767. SeeAlso: #0217
  2768.  
  2769. Format of Flags subvector:
  2770. Offset    Size    Description    (Table 0235)
  2771.  00h    BYTE    03h (length)
  2772.  01h    BYTE    17h (subvector "Flags")
  2773.  02h    BYTE    flags
  2774.         bit 7: queueing requested
  2775. SeeAlso: #0217
  2776.  
  2777. Format of Parameter ranges subvector:
  2778. Offset    Size    Description    (Table 0236)
  2779.  00h    BYTE    length
  2780.  01h    BYTE    18h (subvector "Parameter ranges")
  2781.  02h  N BYTEs    subvector(s) of type 09h, 11h, 12h, or 13h
  2782. SeeAlso: #0217
  2783.  
  2784. Format of Flow control subvector:
  2785. Offset    Size    Description    (Table 0237)
  2786.  00h    BYTE    length (02h-04h)
  2787.  01h    BYTE    19h (subvector "Flow control")
  2788.  02h    BYTE    XOFF character
  2789.  03h    BYTE    XON character
  2790. Note:    if length is 02h, flow control is disabled; if length is 03h, any
  2791.       character will be accepted as XON after an XOFF
  2792. SeeAlso: #0217
  2793. --------S-140400-----------------------------
  2794. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INSTALLATION CHECK
  2795.     AX = 0400h
  2796. Return: AX = 0FF0h
  2797. SeeAlso: AX=0401h,AX=0408h
  2798. --------S-140401-----------------------------
  2799. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INITIALIZE MODE
  2800.     AX = 0401h
  2801.     CX = mode
  2802. Return: nothing
  2803. SeeAlso: AX=0400h,AX=0402h
  2804. --------S-140402-----------------------------
  2805. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - EXTENDED INITIALIZE
  2806.     AX = 0402h
  2807.     CL = parameters
  2808. Return: nothing
  2809. SeeAlso: AX=0400h,AX=0401h
  2810. --------S-140403-----------------------------
  2811. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - SET TIMEOUT
  2812.     AX = 0403h
  2813.     CX = timeout
  2814. Return: nothing
  2815. SeeAlso: AX=0400h
  2816. --------S-140404-----------------------------
  2817. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE RECEIVE BUFFER
  2818.     AX = 0404h
  2819. Return: nothing
  2820. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  2821. --------S-140405-----------------------------
  2822. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET RECEIVE BUFFER COUNT
  2823.     AX = 0405h
  2824. Return: AX = number of characters in buffer
  2825. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  2826. --------S-140406-----------------------------
  2827. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE TRANSMIT BUFFER
  2828.     AX = 0406h
  2829. Return: nothing
  2830. SeeAlso: AX=0400h,AX=0404h,AX=0407h
  2831. --------S-140407-----------------------------
  2832. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET TRANSMIT BUFFER COUNT
  2833.     AX = 0407h
  2834. Return: AX = number of characters in the buffer
  2835. SeeAlso: AX=0400h,AX=0405h,AX=0406h
  2836. --------S-140408-----------------------------
  2837. INT 14 - Microsoft Systems Journal TSRCOMM INT14 - UNINSTALL
  2838.     AX = 0408h
  2839. Return: nothing
  2840. SeeAlso: AX=0400h
  2841. --------S-1405-------------------------------
  2842. INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
  2843.     AH = 05h
  2844.     AL = function
  2845.         00h read modem control register
  2846.           Return: BL = modem control register (see #0238)
  2847.               AH = status
  2848.         01h write modem control register
  2849.           BL = modem control register (see #0238)
  2850.           Return: AX = status
  2851.     DX = port number
  2852. Note:    also supported by ArtiCom
  2853. SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh
  2854.  
  2855. Bitfields for modem control register:
  2856. Bit(s)    Description    (Table 0238)
  2857.  0    data terminal ready
  2858.  1    request to send
  2859.  2    OUT1
  2860.  3    OUT2
  2861.  4    LOOP
  2862.  5-7    reserved
  2863. --------S-1405-------------------------------
  2864. INT 14 - FOSSIL - DEINITIALIZE DRIVER
  2865.     AH = 05h
  2866.     DX = port number
  2867. Return: none
  2868.     DTR is not affected
  2869. SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
  2870. --------S-1405-------------------------------
  2871. INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
  2872.     AH = 05h
  2873.     AL = timeout in seconds (00h = never)
  2874. Return: AL = status
  2875.         00h successful
  2876.         AH = character read
  2877.         01h read error
  2878.         02h timed out
  2879.         other modem status (CTS, DSR) changed
  2880. Note:    the port number is stored at offset BEh in the Task Control Block
  2881. SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
  2882. SeeAlso: INT 15/AH=13h"MultiDOS"
  2883. --------S-1405-------------------------------
  2884. INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
  2885.     AH = 05h
  2886.     AL = protocol (see #0239)
  2887.     BH = new XOFF character (00h = current)
  2888.     BL = new XON character (00h = current)
  2889.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  2890. Return: AH = status
  2891.         00h successful
  2892.         FFh error
  2893. SeeAlso: AH=04h"Digiboard"
  2894.  
  2895. Bitfields for Digiboard protocol:
  2896. Bit(s)    Description    (Table 0239)
  2897.  7-4    unused
  2898.  3    RTS/CTS
  2899.  2    DSR
  2900.  1,0    XON/XOFF
  2901. --------S-1405-------------------------------
  2902. INT 14 - MBBIOS - DROP DTR AND RTS
  2903.     AH = 05h
  2904.     DX = port number
  2905. Return: none
  2906. SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
  2907. --------S-1405-------------------------------
  2908. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHANGE PORT PROTOCOL
  2909.     AH = 05h
  2910.     AL = new port protocol (see #0240)
  2911.     BH = new XOFF character
  2912.     BL = new XON character
  2913.     DX = port number
  2914. Return: AH = FFh if invalid protocol
  2915. SeeAlso: AH=00h,AH=04h"SERIAL",AH=06h"PC-MOS"
  2916.  
  2917. Bitfields for PC-MOS/386 serial port protocol:
  2918. Bit(s)    Description    (Table 0240)
  2919.  7    set to enable/disable CD monitoring, clear to set protocol
  2920. ---bit 7 set---
  2921.  4    CD monitoring enabled
  2922.  5    automatic restart enabled
  2923. ---bit 7 clear---
  2924.  0    receive XON/XOFF
  2925.  1    transmit XON/XOFF
  2926.  2    DTR/DSR
  2927.  3    RTS/CTS
  2928. --------N-1405--DXFFFF-----------------------
  2929. INT 14 - Connection Manager - CLOSE COMMUNICATION
  2930.     AH = 05h
  2931.     DX = FFFFh
  2932.     AL = connection ID
  2933. Return: AH = return code
  2934.         00h successful
  2935.         01h no such connection
  2936.         02h invalid connection ID
  2937.         AL = correct connection ID
  2938. Desc:    terminate existing connection to allow another one to be established
  2939. Note:    if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
  2940.       function, but redirects the port over the network; if DX is any other
  2941.       value, the call is chained
  2942. SeeAlso: AH=04h/DX=FFFFh,AH=0Dh/DX=FFFFh
  2943. --------S-1406-------------------------------
  2944. INT 14 - FOSSIL - RAISE/LOWER DTR
  2945.     AH = 06h
  2946.     DX = port
  2947.     AL = DTR state to be set
  2948.         00h = lower
  2949.         01h = raise
  2950. Return: nothing
  2951. SeeAlso: AH=05h"MBBIOS",AH=1Ah
  2952. --------S-1406-------------------------------
  2953. INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
  2954.     AH = 06h
  2955.     AL = character
  2956. Return: AL = status
  2957.         00h successful
  2958. Notes:    the port number is stored at offset BEh in the Task Control Block
  2959.     if output queue is full, the calling task is blocked until the
  2960.       character can be stored
  2961. SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
  2962. SeeAlso: INT 15/AH=13h"MultiDOS"
  2963. --------S-1406-------------------------------
  2964. INT 14 - MBBIOS - RAISE DTR AND RTS
  2965.     AH = 06h
  2966.     DX = port number
  2967. Return: none
  2968. SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
  2969. --------S-1406-------------------------------
  2970. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DRIVER 'ID' FUNCTION
  2971.     AH = 06h
  2972.     DX = port number
  2973. Return: AH bit 7 set
  2974.     AL = number of highest function supported by driver
  2975. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  2976.       operating system by The Software Link, Inc.
  2977. SeeAlso: AH=18h"PC-MOS"
  2978. --------N-1406-------------------------------
  2979. INT 14 - TelAPI - WRITE BLOCK
  2980.     AH = 06h
  2981.     CX = number of characters to write
  2982.     DX = port number
  2983.     ES:DI -> buffer containing data
  2984. Return: AX = number of characters actually sent (negative on error)
  2985.     CX = ???
  2986. SeeAlso: AH=07h"TelAPI",AH=E0h"TelAPI",AH=E3h"TelAPI"
  2987. --------N-1406--DXFFFF-----------------------
  2988. INT 14 - Connection Manager - SEND CHARACTER BLOCK
  2989.     AH = 06h
  2990.     DX = FFFFh
  2991.     AL = connection ID
  2992.     CX = number of characters to send
  2993.     ES:DI -> buffer containing data to be sent
  2994. Return: AH = return code (see #0207)
  2995. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  2996.       serial ports over an IPX or NetBIOS-based network
  2997. SeeAlso: AH=04h/DX=FFFFh,AH=07h/DX=FFFFh,AH=09h/DX=FFFFh
  2998. --------S-1407-------------------------------
  2999. INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
  3000.     AH = 07h
  3001. Return: AL = timer tick interrupt number
  3002.     AH = ticks per second on interrupt number in AL
  3003.     DX = approximate number of milliseconds per tick
  3004. SeeAlso: AH=16h
  3005. --------S-1407-------------------------------
  3006. INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
  3007.     AH = 07h
  3008. Return: CL = modem status (see #0209)
  3009.     CH = character at head of input queue (if any)
  3010.     DX = number of characters in input queue
  3011. Note:    the port number is stored at offset BEh in the Task Control Block
  3012. SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
  3013. SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
  3014. --------S-1407-------------------------------
  3015. INT 14 - MBBIOS - SEND BREAK
  3016.     AH = 07h
  3017.     DX = port number
  3018. Return: none
  3019. SeeAlso: AH=06h"MBBIOS",AH=FAh"EBIOS"
  3020. --------S-1407-------------------------------
  3021. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SEND RS-232 BREAK
  3022.     AH = 07h
  3023.     BX = duration of break in clock ticks
  3024.     DX = port number
  3025. Return: nothing
  3026. --------N-1407-------------------------------
  3027. INT 14 - TelAPI - READ BLOCK
  3028.     AH = 07h
  3029.     CX = length of buffer in bytes
  3030.     DX = port number
  3031.     ES:DI -> buffer for data
  3032. Return: AX > 0000h number of characters actually read
  3033.     AX = 0000h host has closed connection
  3034.     AX < 0000h error code (see #0301)
  3035.     CX = ???
  3036. Note:    translates CRLF into local EOL if the connection is in ASCII mode,
  3037.       negotiates various Telnet options, and immediately executes several
  3038.       different Telnet action commands
  3039. SeeAlso: AH=06h"TelAPI",AH=E0h"TelAPI",AH=E2h"TelAPI"
  3040. --------N-1407--DXFFFF-----------------------
  3041. INT 14 - Connection Manager - RECEIVE CHARACTER BLOCK
  3042.     AH = 07h
  3043.     DX = FFFFh
  3044.     AL = connection ID
  3045.     BL = flag
  3046.         00h wait for data
  3047.         nonzero do not wait if no data avaiable
  3048.     CX = size of receive buffer
  3049.     ES:DI -> buffer for received characters
  3050. Return: AH = return code (00h-02h,04h,FFh) (see #0207)
  3051.     BH = line status (see #0210)
  3052.     CX = number of characters received
  3053. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3054.       serial ports over an IPX or NetBIOS-based network
  3055. SeeAlso: AH=01h/DX=FFFFh,AH=04h/DX=FFFFh,AH=06h/DX=FFFFh
  3056. --------S-1408-------------------------------
  3057. INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
  3058.     AH = 08h
  3059.     DX = port number
  3060. Return: nothing
  3061. SeeAlso: AH=09h"FOSSIL"
  3062. --------S-1408-------------------------------
  3063. INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
  3064.     AH = 08h
  3065. Return: AL = line status (see #0208)
  3066.     AH destroyed
  3067. Notes:    the port number is stored at offset BEh in the Task Control Block
  3068.     on every line status change, the line status is ORed with the line
  3069.       status accumulator; this function returns the accumulator and clears
  3070.       it
  3071. SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  3072. --------S-1408-------------------------------
  3073. INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
  3074.     AH = 08h
  3075.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3076. Return: AH = RS232 status bits (see #0208 at AH=03h)
  3077.     ZF set if no characters queued
  3078.     ZF clear if character available
  3079.         AL = next character
  3080. SeeAlso: AH=03h,AH=08h"PC-MOS",AH=09h"Digiboard",AH=14h"Digiboard"
  3081. --------S-1408-------------------------------
  3082. INT 14 - MBBIOS - NON-DESTRUCTIVE READ
  3083.     AH = 08h
  3084.     DX = port number
  3085. Return: AL = character (if AH bit 0 set)
  3086.     AH = status (see #0208)
  3087. SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
  3088. --------S-1408-------------------------------
  3089. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STATUS CHECK
  3090.     AH = 08h
  3091.     DX = port number
  3092. Return: CF set if carrier loss detected
  3093.     ZF set if input buffer empty
  3094.     ZF clear if characters available
  3095.         AL = next character dequeued
  3096. --------N-1408--DXFFFF-----------------------
  3097. INT 14 - Connection Manager - RETURN DEFAULT CONNECTION PARAMETERS
  3098.     AH = 08h
  3099.     DX = FFFFh
  3100.     CX = size of buffer for parameters or 0000h to get length
  3101.     ES:DI -> buffer for parameter vector (see #0215)
  3102. Return: AH = return code
  3103.         00h successful
  3104.         CX = number of bytes required (if CX=0000h on entry)
  3105.         CX = number of bytes omitted for lack of space (if CX nonzero)
  3106.         nonzero invalid request
  3107. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3108.       serial ports over an IPX or NetBIOS-based network
  3109. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  3110. --------S-1409-------------------------------
  3111. INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
  3112.     AH = 09h
  3113.     DX = port number
  3114. Return: nothing
  3115. SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
  3116. --------S-1409-------------------------------
  3117. INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
  3118.     AH = 09h
  3119. Return: modem status byte cleared
  3120. Note:    the port number is stored at offset BEh in the Task Control Block
  3121. SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
  3122. --------S-1409-------------------------------
  3123. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
  3124.     AH = 09h
  3125.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3126. Return: AH = status
  3127.         00h successful
  3128.         FFh error
  3129. SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
  3130. --------S-1409-------------------------------
  3131. INT 14 - MBBIOS - GET/SET OPTIONS
  3132.     AH = 09h
  3133.     AL = option byte (see #0241)
  3134.     DX = port number???
  3135. Return: AL = old option byte
  3136. SeeAlso: AH=00h"MBBIOS",AH=04h"MBBIOS",AH=10h"FOSSIL"
  3137.  
  3138. Bitfields for MBBIOS option byte:
  3139. Bit(s)    Description    (Table 0241)
  3140.  0    transmit buffering enabled
  3141.  2    hardware handshaking enabled
  3142.  5    high-speed option enabled (see AH=00h"MBBIOS",#0206)
  3143.  other    reserved
  3144. --------S-1409-------------------------------
  3145. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RESET I/O BUFFER POINTERS
  3146.     AH = 09h
  3147.     DX = port number
  3148. Return: nothing
  3149. SeeAlso: AH=13h"PC-MOS"
  3150. --------N-1409--DXFFFF-----------------------
  3151. INT 14 - Connection Manager - SEND BREAK
  3152.     AH = 09h
  3153.     DX = FFFFh
  3154.     AL = connection ID
  3155. Return: AH = return code (00h-02h) (see #0207 at AH=00h/DX=FFFFh)
  3156. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3157.       serial ports over an IPX or NetBIOS-based network
  3158. SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh
  3159. --------S-140A-------------------------------
  3160. INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
  3161.     AH = 0Ah
  3162.     DX = port number
  3163. Return: nothing
  3164. SeeAlso: AH=09h"FOSSIL",AH=85h
  3165. --------S-140A-------------------------------
  3166. INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
  3167.     AH = 0Ah
  3168.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3169. Return: AX = number of characters available in buffer
  3170. Note:    this function is also supported by the PC-MOS/386 v5.01 $serial.sys
  3171. SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
  3172. --------S-140A-------------------------------
  3173. INT 14 - MBBIOS - WRITE BUFFER
  3174.     AH = 0Ah
  3175.     CX = count
  3176.     ES:DI -> buffer (see #0242)
  3177. Return: AX = status (see #0208,#0209)
  3178.     CX = unsent character count
  3179.     DI updated
  3180. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI; instead, ES
  3181.       contains the segment of a buffer containing the packet to be sent,
  3182.       which by default will be freed once the packet has been sent.     Use
  3183.       AH=0Ch"MBBIOS" to allocate the buffer.
  3184. SeeAlso: AH=01h,AH=0Bh"MBBIOS",AH=0Ch"MBBIOS",AH=19h"FOSSIL"
  3185.  
  3186. Format of MBBIOS PACCOM buffer:
  3187. Offset    Size    Description    (Table 0242)
  3188.  00h 504 BYTEs    data area
  3189. 1F8h    WORD    length of data in data area
  3190. 1FAh    BYTE    flags/status
  3191.         bit 7: don't discard buffer after transmitting data
  3192.         bit 6: buffer has been transmitted
  3193. 1FBh    BYTE    reserved (0) for additional flags/status
  3194. 1FCh    WORD    user data
  3195. 1FEh    WORD    MBBIOS-internal pointer to next buffer
  3196. --------N-140A--DXFFFF-----------------------
  3197. INT 14 - Connection Manager - MODIFY ACTIVE CONNECTION PARAMETERS
  3198.     AH = 0Ah
  3199.     DX = FFFFh
  3200.     ES:DI -> vector string containing new parameters (see #0215)
  3201. Return: AH = return code (00h-03h,06h) (see #0207)
  3202. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3203.       serial ports over an IPX or NetBIOS-based network
  3204. Note:    any subvectors valid for the Change Parameters command replace the
  3205.       existing values in the current set
  3206. SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
  3207. --------S-140B-------------------------------
  3208. INT 14 - FOSSIL - TRANSMIT NO WAIT
  3209.     AH = 0Bh
  3210.     AL = character
  3211.     DX = port number
  3212. Return: AX = result
  3213.         0000h character not accepted
  3214.         0001h character accepted
  3215. SeeAlso: AH=01h
  3216. --------S-140B-------------------------------
  3217. INT 14 - MBBIOS - READ BUFFER
  3218.     AH = 0Bh
  3219.     CX = size of buffer
  3220.     ES:DI -> buffer
  3221. Return: AH = composite line status (see #0208) formed by ORing all statuses
  3222.           on receive interrupts; bit 0 set if additional characters
  3223.           available
  3224.     AL = composite modem status (see #0209) formed by ORing all statuses
  3225.     CX = number of characters actually read
  3226.     DI updated
  3227. Note:    the PACCOM version of MBBIOS does not use CX or ES:DI on call,
  3228.       instead returning ES set to the segment of the buffer containing a
  3229.       received packet, or 0000h if no packets available; the buffer may
  3230.       be freed with AH=0Ch"MBBIOS"
  3231. SeeAlso: AH=02h,AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=0Ch"MBBIOS",AH=18h"FOSSIL"
  3232. --------N-140B--DXFFFF-----------------------
  3233. INT 14 - Connection Manager - PREPARE FOR INBOUND CONNECTION
  3234.     AH = 0Bh
  3235.     DX = FFFFh
  3236.     AL = service name
  3237.         00h use parameter file or default
  3238.         01h use specified name
  3239.         ES:DI -> 16-byte blank-padded name
  3240.     BH = connection notification
  3241.         00h program awaiting connection, don't notify user
  3242.         01h notify user on connecting
  3243.     BL = connection type
  3244.         00h connection will use Connection Manager API
  3245. Return: AH = return code (00h-02h) (see #0207 at AH=00h/DX=FFFFh)
  3246.     AL = connection ID if AH=00h
  3247. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3248.       serial ports over an IPX or NetBIOS-based network
  3249. SeeAlso: AH=04h/DX=FFFFh,AH=0Ch/DX=FFFFh,AH=10h/DX=FFFFh
  3250. --------S-140C-------------------------------
  3251. INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
  3252.     AH = 0Ch
  3253.     DX = port number
  3254. Return: AX = FFFFh character not available
  3255.     AX = 00xxh character xx available
  3256. SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
  3257. --------S-140C-------------------------------
  3258. INT 14 - MBBIOS PACCOM support - BUFFER MANAGEMENT
  3259.     AH = 0Ch
  3260.     ES = segment of buffer to free, or 0000h to allocate new buffer
  3261. Return: ES = segment of allocated buffer (if ES=0000h on entry)
  3262. Note:    the PACCOM version of MBBIOS uses only ES as buffer address for
  3263.       AH=0Ah and AH=0Bh
  3264. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  3265. --------N-140C--DXFFFF-----------------------
  3266. INT 14 - Connection Manager - TEST FOR INBOUND CONNECTION REQUEST
  3267.     AH = 0Ch
  3268.     DX = FFFFh
  3269.     AL = connection ID from AH=0Bh/DX=FFFFh
  3270. Return: AH = return code (00h-03h) (see also #0207 at AH=00h/DX=FFFFh)
  3271.         03h not prepared for inbound connection
  3272.     AL = connection ID (if AH=00h) or correct connection ID (if AH=02h)
  3273. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3274.       serial ports over an IPX or NetBIOS-based network
  3275. SeeAlso: AH=03h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  3276. --------S-140D-------------------------------
  3277. INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
  3278.     AH = 0Dh
  3279. Return: AX = result
  3280.         FFFFh character not available
  3281.         xxyyh standard IBM-style scan code
  3282. SeeAlso: AH=0Eh
  3283. --------S-140D-------------------------------
  3284. INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
  3285.     AH = 0Dh
  3286.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3287. Return: ES:BX -> CH_KEY_RDY flag (see #0243)
  3288. SeeAlso: AH=0Ah"Digiboard"
  3289.  
  3290. (Table 0243)
  3291. Values for Digiboard CH_KEY_RDY flag:
  3292.  00h    receive buffer empty
  3293.  FFh    characters available
  3294. --------S-140D-------------------------------
  3295. INT 14 - MBBIOS PACCOM support - SET TXD
  3296.     AH = 0Dh
  3297.     AL = new setting (FFh = 1.0)
  3298. Return: nothing
  3299. Desc:    specify the time from RTS to start or packet
  3300. SeeAlso: AX=0D00h,AH=0Eh"MBBIOS",AH=0Fh"MBBIOS"
  3301. --------N-140D--DXFFFF-----------------------
  3302. INT 14 - Connection Manager - TERMINATE CONNECTION CLIENT ACTIVITY
  3303.     AH = 0Dh
  3304.     DX = FFFFh
  3305. Return: AH = return code
  3306.         00h successful
  3307.         nonzero operation not terminated
  3308. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3309.       serial ports over an IPX or NetBIOS-based network
  3310. Desc:    end all Connection Client TSR activity to allow it to be removed from
  3311.       memory
  3312. SeeAlso: AH=05h/DX=FFFFh,AH=6Fh/BX=FFFFh
  3313. --------S-140D00-----------------------------
  3314. INT 14 - MBBIOS - GET AVAILABLE BYTES
  3315.     AX = 0D00h
  3316. Return: AX = bytes in transmit buffer
  3317.     CX = bytes in receive buffer
  3318. SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
  3319. --------S-140D01-----------------------------
  3320. INT 14 - MBBIOS - LOWER ALL MODEM CONTROL SIGNALS
  3321.     AX = 0D01h
  3322. Return: nothing
  3323. Note:    this function lowers DTR, RTS, etc.
  3324. SeeAlso: AX=0D02h
  3325. --------S-140D02-----------------------------
  3326. INT 14 - MBBIOS - RAISE ALL MODEM CONTROL SIGNALS
  3327.     AX = 0D02h
  3328. Return: nothing
  3329. Note:    this function raises DTR, RTS, etc.
  3330. SeeAlso: AX=0D01h
  3331. --------S-140D03-----------------------------
  3332. INT 14 - MBBIOS - SET HANDSHAKE BYTE
  3333.     AX = 0D03h
  3334.     CL = new handshake byte
  3335. Return: CL = previous handshake byte
  3336. Note:    this function lowers DTR, RTS, etc.
  3337. --------S-140E-------------------------------
  3338. INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
  3339.     AH = 0Eh
  3340. Return: AX = xxyyh standard IBM-style scan code
  3341. SeeAlso: AH=0Dh"FOSSIL"
  3342. --------S-140E-------------------------------
  3343. INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
  3344.     AH = 0Eh
  3345.     CX = number of characters to write
  3346.     ES:BX -> string
  3347.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3348. Return: AX = number of characters actually written
  3349.     ZF clear if successful
  3350.     ZF set on error
  3351. SeeAlso: AH=0Fh"Digiboard"
  3352. --------S-140E-------------------------------
  3353. INT 14 - MBBIOS PACCOM support - SET PERSISTENCE
  3354.     AH = 0Eh
  3355.     AL = new setting (FFh = 1.0)
  3356. Return: nothing
  3357. Desc:    specify the time from end of DCD to RTS
  3358. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  3359. --------N-140E--DXFFFF-----------------------
  3360. INT 14 - Connection Manager - SET HARDWARE FLOW STATE
  3361.     AH = 0Eh
  3362.     DX = FFFFh
  3363.     AL = connection ID from AH=04h/DX=FFFFh
  3364.     BL = RTS state (00h off, 01h on)
  3365. Return: AH = return code (00h-03h) (see also #0207 at AH=00h/DX=FFFFh)
  3366.         03h invalid request (BL not 00h or 01h)
  3367. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3368.       serial ports over an IPX or NetBIOS-based network
  3369. SeeAlso: AH=03h/DX=FFFFh,AH=0Ah/DX=FFFFh
  3370. --------S-140F-------------------------------
  3371. INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
  3372.     AH = 0Fh
  3373.     AL = bit mask describing requested flow control (see #0244)
  3374.     DX = port number
  3375. Return: nothing
  3376. SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
  3377.  
  3378. Bitfields for FOSSIL requested flow control:
  3379. Bit(s)    Description    (Table 0244)
  3380.  0    XON/XOFF on transmit (watch for XOFF while sending)
  3381.  1    CTS/RTS (CTS on transmit/RTS on receive)
  3382.  2    reserved
  3383.  3    XON/XOFF on receive (send XOFF when buffer near full)
  3384.  4-7    all 1
  3385. --------S-140F-------------------------------
  3386. INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
  3387.     AH = 0Fh
  3388.     CX = number of characters to read
  3389.     ES:BX -> buffer
  3390.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3391. Return: AX = number of characters read
  3392.     ZF clear if successful
  3393.     ZF set on error (line status or wrong number of characters)
  3394. SeeAlso: AH=0Eh"Digiboard"
  3395. --------S-140F-------------------------------
  3396. INT 14 - MBBIOS PACCOM support - SET SLOT TIME
  3397.     AH = 0Fh
  3398.     AL = new setting in clock ticks
  3399. Return: nothing
  3400. Desc:    specify the time from end of DCD to RTS
  3401. SeeAlso: AH=0Dh"MBBIOS",AH=0Eh"MBBIOS",AH=10h"MBBIOS"
  3402. --------N-140F--DXFFFF-----------------------
  3403. INT 14 - Connection Manager - RETURN ACTIVE CONNECTION PARAMETERS
  3404.     AH = 0Fh
  3405.     DX = FFFFh
  3406.     AL = connection ID
  3407.     CX = size of buffer or 0000h to get length of returned vector
  3408.     ES:DI -> buffer for connection parameter vector (see #0215)
  3409. Return: AH = return code (00h-02h,06h) (see #0207 at AH=00h/DX=FFFFh)
  3410.     CX = number of bytes which could not be returned because the given
  3411.           buffer was too small
  3412. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3413.       serial ports over an IPX or NetBIOS-based network
  3414. SeeAlso: AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
  3415. --------S-1410-------------------------------
  3416. INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
  3417.     AH = 10h
  3418.     AL = bit mask
  3419.         bit 0: enable/disable ^C/^K checking
  3420.         bit 1: enable/disable the transmitter
  3421.     DX = port number
  3422. Return: nothing
  3423. SeeAlso: AH=0Fh"FOSSIL"
  3424. --------S-1410-------------------------------
  3425. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
  3426.     AH = 10h
  3427.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3428. Return: AH = status
  3429.         00h successful
  3430.         FFh error
  3431. SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
  3432. --------S-1410-------------------------------
  3433. INT 14 - MBBIOS PACCOM support - SET CRC WAIT
  3434.     AH = 10h
  3435.     AL = new setting in clock ticks (should be at least 5 character times)
  3436. Return: nothing
  3437. Desc:    specify the time from start of last character to dropping RTS
  3438. SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
  3439. --------N-1410--DXFFFF-----------------------
  3440. INT 14 - Connection Manager - QUERY SERVICE NAMES
  3441.     AH = 10h
  3442.     DX = FFFFh
  3443.     CL = subfunction
  3444.         00h search first
  3445.         01h search next
  3446.     ES:DI -> pattern buffer (see #0245)
  3447. Return: AH = return code (00h,01h,03h,06h) (see also #0207 at AH=00h/DX=FFFFh)
  3448.         01h no (more) matching names
  3449.         03h invalid request
  3450.     ES:DI buffer filled with reply buffer (see #0245) containing matched
  3451.           name if AH=00h
  3452. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  3453.       serial ports over an IPX or NetBIOS-based network
  3454. Desc:    obtain the names of groups and lines available for connection requests,
  3455.       and the names of active Connection Servers
  3456. SeeAlso: AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
  3457.  
  3458. Format of Connection Manager pattern/reply buffer:
  3459. Offset    Size    Description    (Table 0245)
  3460.  00h    WORD    length of pattern (30h or 32h)
  3461.  02h 16 BYTEs    server pattern or name
  3462.  12h 16 BYTEs    group pattern or name
  3463.  22h 16 BYTEs    line pattern or name
  3464.  23h    BYTE    (optional) ???
  3465.  24h    BYTE    (optional, returned) current line status
  3466.         00h available
  3467.         01h out of service
  3468.         02h currently allocated to a connection
  3469. Note:    pattern may include '?' wildcard to match any character
  3470. --------S-1411-------------------------------
  3471. INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
  3472.     AH = 11h
  3473.     DH = row
  3474.     DL = column
  3475. Return: nothing
  3476. Note:    this is the same as INT 10/AH=02h
  3477. SeeAlso: AH=12h"FOSSIL"
  3478. --------S-1411-------------------------------
  3479. INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
  3480.     AH = 11h
  3481.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3482. Return: AH = status
  3483.         00h successful
  3484.         FFh error
  3485. SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
  3486. --------S-1411-------------------------------
  3487. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DISABLE PORT
  3488.     AH = 11h
  3489.     DX = port number
  3490. Return: AL = status
  3491.         00h successful
  3492.         01h IRQ for port is shared
  3493.         02h IRQ was reserved
  3494. SeeAlso: AH=04h,AH=05h,AH=12h"PC-MOS"
  3495. --------S-1412-------------------------------
  3496. INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
  3497.     AH = 12h
  3498. Return: DH = row
  3499.     DL = column
  3500. Note:    this is the same as INT 10/AH=03h
  3501. SeeAlso: AH=11h"FOSSIL"
  3502. --------S-1412-------------------------------
  3503. INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
  3504.     AH = 12h
  3505.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3506. Return: AX = number of bytes free
  3507. SeeAlso: AH=0Ah"Digiboard",AH=14h"Digiboard"
  3508. --------S-1412-------------------------------
  3509. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET CURRENT PORT PARAMETERS
  3510.     AH = 12h
  3511.     DX = port number
  3512. Return: AH = status
  3513.         FFh port number invalid
  3514.     AL = line parameters (see #0208)
  3515.     AH = flow control configuration (see #0240 at AH=05h"PC-MOS")
  3516.     CX:BX = bps rate
  3517.     DL = XOFF character or 00h for none
  3518.     DH = XON character or 00h for none
  3519. --------S-1413-------------------------------
  3520. INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
  3521.     AH = 13h
  3522.     AL = character
  3523. Return: nothing
  3524. Note:    should not be called if it is unsafe to call DOS
  3525. SeeAlso: AH=15h
  3526. --------S-1413-------------------------------
  3527. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - REGISTER A PORT WITH A TERMINAL
  3528.     AH = 13h
  3529.     DX = port number
  3530. Return: AH = status
  3531.         FFh port number invalid
  3532.         else
  3533.         ES:BX -> BYTE flag (00h buffer empty, FFh buffer contains data)
  3534. SeeAlso: AH=17h"PC-MOS"
  3535. --------S-1414-------------------------------
  3536. INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
  3537.     AH = 14h
  3538.     AL = 01h enable watchdog
  3539.          00h disable watchdog
  3540.     DX = port number
  3541. Return: nothing
  3542. SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR"
  3543. --------S-1414-------------------------------
  3544. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT STRING
  3545.     AH = 14h
  3546.     CX = number of characters in string
  3547.     DX = port number
  3548.     ES:BX -> string to be sent
  3549.     SI = timeout in timer ticks or 0000h for default
  3550. Return: AX = number of bytes actually sent
  3551.     ZF clear if successful
  3552.     ZF set on timeout
  3553. SeeAlso: AH=01h,AH=15h"PC-MOS"
  3554. --------S-1414-------------------------------
  3555. INT 14 - Digiboard - GET NUMBER OF BOARDS INSTALLED
  3556.     AH = 14h
  3557. Return: AX = number of boards installed
  3558. SeeAlso: AH=08h"Digiboard",AH=15h"Digiboard"
  3559. --------S-1415-------------------------------
  3560. INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
  3561.     AH = 15h
  3562.     AL = character
  3563. Return: nothing
  3564. SeeAlso: AH=13h"FOSSIL"
  3565. --------S-1415-------------------------------
  3566. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STRING
  3567.     AH = 15h
  3568.     CX = size of buffer
  3569.     DX = port number
  3570.     ES:BX -> buffer for received characters
  3571.     SI = timeout in clock ticks or 0000h for default
  3572. Return: AX = number of characters actually read
  3573.     ZF set on timeout (no data available)
  3574. SeeAlso: AH=02h,AH=14h"PC-MOS",AH=16h"PC-MOS"
  3575. --------S-1415-------------------------------
  3576. INT 14 - Digiboard - ENABLE/DISABLE MEMORY
  3577.     AH = 15h
  3578.     AL = new state (00h disabled, 01h enabled)
  3579. Return: AH = status
  3580.         00h successful
  3581.         80h error
  3582.         FFh error
  3583. SeeAlso: AH=14h"Digiboard",AH=16h"Digiboard"
  3584. --------S-1416-------------------------------
  3585. INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
  3586.     AH = 16h
  3587.     AL = function
  3588.         00h = delete
  3589.         01h = add
  3590.     ES:DX -> routine to call
  3591. Return: AX = status
  3592.         0000h successful
  3593.         0001h unsuccessful
  3594. SeeAlso: AH=07h"FOSSIL"
  3595. --------S-1416-------------------------------
  3596. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - LINK TO ANOTHER SERIAL DRIVER
  3597.     AH = 16h
  3598.     ES:BX -> calling driver's INT 14 entry point
  3599. Return: nothing
  3600. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  3601.       operating system by The Software Link, Inc.
  3602. --------S-1416-------------------------------
  3603. INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
  3604.     AH = 16h
  3605.     AL = CCB command number (see #0246) (see also following entries)
  3606.     BL = byte 2
  3607.     BH = byte 3
  3608.     CL = byte 1 (for all channel functions except 4Eh and 4Fh)
  3609.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3610. Return: AH = status
  3611.         00h successful
  3612.         80h error
  3613.         FFh error
  3614. SeeAlso: AX=1646h,AH=18h"Digiboard"
  3615.  
  3616. (Table 0246)
  3617. Values for Digiboard CCB command number:
  3618.  40h    Set Receive Mid Water Mark
  3619.  41h    Set Receive High Water Mark
  3620.  42h    Flush Receive Buffer
  3621.  43h    Flush Transmit Buffer
  3622.  44h    Transmit Pause
  3623.  45h    Transmit Resume
  3624.  46h    Set Interrupt to Host Mask
  3625.  47h    Set Baud, Data, Stop and Parity
  3626.  48h    Send Break
  3627.  49h    Set Modem Lines
  3628.  4Ah    Set Break Count
  3629.  4Bh    Set Handshake
  3630.  4Ch    Set Xon/Xoff Characters
  3631.  4Dh    Set Transmit Mid Water Mark
  3632.  4Eh    IRQ Polling Timer to Host
  3633.  4Fh    Buffer Set All
  3634.  50h    Port On
  3635.  51h    Port Off
  3636.  52h    Receive Pause
  3637.  53h    Special Character Interrupt
  3638.  54h    RS-422 Enable
  3639. --------S-141646-----------------------------
  3640. INT 14 - Digiboard - CCB COMMAND - SET INTERRUPT TO HOST MASK
  3641.     AX = 1646h
  3642.     BL = bits to set
  3643.     BH = bits to clear
  3644.     CL = byte 1
  3645.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3646. Return: AH = status
  3647.         00h successful
  3648.         80h error
  3649.         FFh error
  3650. SeeAlso: AH=16h"Digiboard",AX=1647h
  3651. --------S-141647-----------------------------
  3652. INT 14 - Digiboard - CCB COMMAND - SET BAUD/DATABITS/STOPBITS/PARITY
  3653.     AX = 1647h
  3654.     BL = baud
  3655.     BH = datatype
  3656.     CL = byte 1
  3657.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3658. Return: AH = status
  3659.         00h successful
  3660.         80h error
  3661.         FFh error
  3662. SeeAlso: AH=16h"Digiboard",AX=1646h,AX=1649h
  3663. --------S-141649-----------------------------
  3664. INT 14 - Digiboard - CCB COMMAND - SET MODEM LINES
  3665.     AX = 1649h
  3666.     BL = bits to set
  3667.     BH = bits to clear
  3668.     CL = byte 1
  3669.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3670. Return: AH = status
  3671.         00h successful
  3672.         80h error
  3673.         FFh error
  3674. SeeAlso: AH=16h"Digiboard",AX=1647h
  3675. --------S-14164A-----------------------------
  3676. INT 14 - Digiboard - CCB COMMAND - SET BREAK COUNT
  3677.     AX = 164Ah
  3678.     BL = break count
  3679.     CL = byte 1
  3680.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3681. Return: AH = status
  3682.         00h successful
  3683.         80h error
  3684.         FFh error
  3685. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Bh
  3686. --------S-14164B-----------------------------
  3687. INT 14 - Digiboard - CCB COMMAND - SET HANDSHAKE
  3688.     AX = 164Bh
  3689.     BL = bits to set
  3690.     BH = bits to clear
  3691.     CL = byte 1
  3692.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3693. Return: AH = status
  3694.         00h successful
  3695.         80h error
  3696.         FFh error
  3697. SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Ch
  3698. --------S-14164C-----------------------------
  3699. INT 14 - Digiboard - CCB COMMAND - SET XON/XOFF CHARACTERS
  3700.     AX = 164Ch
  3701.     BL = XON character
  3702.     BH = XOFF character
  3703.     CL = byte 1
  3704.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3705. Return: AH = status
  3706.         00h successful
  3707.         80h error
  3708.         FFh error
  3709. SeeAlso: AH=16h"Digiboard",AX=164Bh,AX=164Dh
  3710. --------S-14164D-----------------------------
  3711. INT 14 - Digiboard - CCB COMMAND - SET TRANSMIT MID-WATER MARK
  3712.     AX = 164Dh
  3713.     BX = new mid-water mark
  3714.     CL = byte 1
  3715.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3716. Return: AH = status
  3717.         00h successful
  3718.         80h error
  3719.         FFh error
  3720. SeeAlso: AH=16h"Digiboard",AX=164Ch,AX=164Eh,AX=164Fh
  3721. --------S-14164E-----------------------------
  3722. INT 14 - Digiboard - CCB COMMAND - IRQ POLLING TIMER TO HOST
  3723.     AX = 164Eh
  3724.     BL = ticks
  3725.     BH = ???
  3726.     CL = mode
  3727.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3728. Return: AH = status
  3729.         00h successful
  3730.         80h error
  3731.         FFh error
  3732. SeeAlso: AH=16h"Digiboard",AX=164Dh
  3733. --------S-14164F-----------------------------
  3734. INT 14 - Digiboard - CCB COMMAND - BUFFER SET ALL
  3735.     AX = 164Fh
  3736.     BL = size
  3737.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3738. Return: AH = status
  3739.         00h successful
  3740.         80h error
  3741.         FFh error
  3742. SeeAlso: AH=16h"Digiboard",AX=164Dh
  3743. --------S-141653-----------------------------
  3744. INT 14 - Digiboard - CCB COMMAND - SPECIAL CHARACTER INTERRUPT
  3745.     AX = 1653h
  3746.     BL = enable/disable
  3747.     BH = special character
  3748.     CL = byte 1
  3749.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3750. Return: AH = status
  3751.         00h successful
  3752.         80h error
  3753.         FFh error
  3754. SeeAlso: AH=16h"Digiboard",AX=1646h
  3755. --------S-1417-------------------------------
  3756. INT 14 - FOSSIL - REBOOT SYSTEM
  3757.     AH = 17h
  3758.     AL = method
  3759.         00h = cold boot
  3760.         01h = warm boot
  3761. SeeAlso: INT 16/AX=E0FFh,INT 19,INT 60/DI=0606h
  3762. --------S-1417-------------------------------
  3763. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - WRITE MODEM CONTROL REGISTER
  3764.     AH = 17h
  3765.     AL = new value for UART's modem control register
  3766.     DX = port number
  3767. Return: nothing
  3768. --------S-1418-------------------------------
  3769. INT 14 - FOSSIL - READ BLOCK
  3770.     AH = 18h
  3771.     CX = maximum number of characters to transfer
  3772.     DX = port number
  3773.     ES:DI -> user buffer
  3774. Return: AX = number of characters transferred
  3775. SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
  3776. --------S-1418-------------------------------
  3777. INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
  3778.     AH = 18h
  3779.     ES:BX -> 16-byte command string
  3780.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3781. Return: AH = status
  3782.         00h successful
  3783.         80h timeout
  3784.     AL = mailbox status
  3785.         00h no errors
  3786.         8Xh BIOS error
  3787.     ES:BX buffer filled in with mailbox string
  3788.     ZF clear if no errors
  3789.     ZF set if either status byte contains an error code
  3790. SeeAlso: AH=16h"Digiboard"
  3791. --------S-1418-------------------------------
  3792. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET DRIVER DESCRIPTION
  3793.     AH = 18h
  3794.     DX = port number
  3795. Return: DS:BX -> 40-byte buffer containing a string identifying the serial
  3796.         driver
  3797. SeeAlso: AH=06h"PC-MOS"
  3798. --------S-1419-------------------------------
  3799. INT 14 - FOSSIL - WRITE BLOCK
  3800.     AH = 19h
  3801.     CX = maximum number of characters to transfer
  3802.     DX = port number
  3803.     ES:DI -> user buffer
  3804. Return: AX = number of characters transferred
  3805. SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
  3806. --------S-1419-------------------------------
  3807. INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
  3808.     AH = 19h
  3809.     BL = flag
  3810.         00h disable special character interrupt
  3811.         FFh enable interrupt
  3812.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3813. Return: AH = status
  3814.         00h successful
  3815.         FFh failed
  3816. SeeAlso: AH=1Ah"Digiboard"
  3817. --------S-1419-------------------------------
  3818. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SELECTIVE BUFFER FLUSH
  3819.     AH = 19h
  3820.     AL = what to flush
  3821.         bit 0: input buffer
  3822.         bit 1: output buffer
  3823.     DX = port number
  3824. Return: nothing
  3825. SeeAlso: AH=09h"PC-MOS"
  3826. --------S-141A-------------------------------
  3827. INT 14 - FOSSIL - BREAK BEGIN OR END
  3828.     AH = 1Ah
  3829.     AL = 00h stop sending 'break'
  3830.          01h start sending 'break'
  3831.     DX = port number
  3832. Return: nothing
  3833. SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
  3834. --------S-141A-------------------------------
  3835. INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
  3836.     AH = 1Ah
  3837.     BX = subfunction
  3838.         00h return pointer to special character flag byte
  3839.         01h return pointer to special character counter word
  3840.     DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
  3841. Return: ES:BX -> special character flag or counter
  3842. Notes:    flag is FFh if one or more special characters are in the receive
  3843.       buffer; it is 00h and the counter is invalid if no special characters
  3844.       are in the receive buffer
  3845.     counter (if valid) contains the number of characters in the receive
  3846.       buffer up to and including the last-received special character
  3847. --------S-141B-------------------------------
  3848. INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
  3849.     AH = 1Bh
  3850.     DX = port number
  3851.     CX = size of user buffer
  3852.     ES:DI -> user buffer for driver info (see #0247)
  3853. Return: AX = number of characters transferred
  3854.     CX = 3058h ("0X") (X00 FOSSIL only)
  3855.     DX = 2030h (" 0") (X00 FOSSIL only)
  3856.  
  3857. Format of FOSSIL driver info:
  3858. Offset    Size    Description    (Table 0247)
  3859.  00h    WORD    size of structure in bytes
  3860.  02h    BYTE    FOSSIL spec driver conforms to
  3861.  03h    BYTE    revision level of this specific driver
  3862.  04h    DWORD    pointer to ASCIZ identification string
  3863.  08h    WORD    size of the input buffer
  3864.  0Ah    WORD    number of bytes left in buffer
  3865.  0Ch    WORD    size of the output buffer
  3866.  0Eh    WORD    number of bytes left in buffer
  3867.  10h    BYTE    width of screen
  3868.  11h    BYTE    length of screen
  3869.  12h    BYTE    actual baud rate, computer to modem
  3870. --------S-141C-------------------------------
  3871. INT 14 - X00 FOSSIL - ACTIVATE PORT
  3872.     AH = 1Ch
  3873.     DX = port number
  3874. Return: AX = 1954h if successful
  3875.     BL = maximum function number supported (not including 7Eh and above)
  3876.     BH = revision of FOSSIL specification supported
  3877. Note:    this is a duplicate of AH=04h, so that AH=04h may be made compatible
  3878.       with the PS/2 BIOS in a future release
  3879. SeeAlso: AH=04h"FOSSIL",AH=1Dh
  3880. --------S-141D-------------------------------
  3881. INT 14 - X00 FOSSIL - DEACTIVATE PORT
  3882.     AH = 1Dh
  3883.     DX = port number
  3884. Return: none
  3885. Notes:    this is a duplicate of AH=05h, so that AH=05h may be made compatible
  3886.       with the PS/2 BIOS in a future release
  3887.     ignored if the port was never activated with AH=04h or AH=1Ch
  3888. SeeAlso: AH=05h"FOSSIL",AH=1Ch
  3889. --------S-141E-------------------------------
  3890. INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
  3891.     AH = 1Eh
  3892.     AL = break status
  3893.         00h if break
  3894.         01h if no break
  3895.     BH = parity (see #0248)
  3896.     BL = number of stop bits
  3897.         00h one stop bit
  3898.         01h two stop bits (1.5 if 5 bit word length)
  3899.     CH = word length (see #0249)
  3900.     CL = bps rate (see #0250)
  3901.     DX = port number
  3902. Return: AX = port status code (see #0208,#0209)
  3903. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=04h call
  3904.     if the port was locked at X00 load time, the appropriate parameters are
  3905.       ignored
  3906. SeeAlso: AH=00h,AH=04h"SERIAL"
  3907.  
  3908. (Table 0248)
  3909. Values for X00 FOSSIL parity:
  3910.  00h    no parity
  3911.  01h    odd parity
  3912.  02h    even parity
  3913.  03h    stick parity odd
  3914.  04h    stick parity even
  3915. SeeAlso: #0211,#0249,#0250
  3916.  
  3917. (Table 0249)
  3918. Values for X00 FOSSIL word length:
  3919.  00h    5 bits
  3920.  01h    6 bits
  3921.  02h    7 bits
  3922.  03h    8 bits
  3923. SeeAlso: #0212,#0248,#0250
  3924.  
  3925. (Table 0250)
  3926. Values for X00 FOSSIL bps rate:
  3927.  00h    110
  3928.  01h    150
  3929.  02h    300
  3930.  03h    600
  3931.  04h    1200
  3932.  05h    2400
  3933.  06h    4800
  3934.  07h    9600
  3935.  08h    19200
  3936. SeeAlso: #0213,#0248,#0249
  3937. --------S-141E------------------------------------
  3938. INT 14 - HUNTER 16 - READ COMMS PARAMETERS
  3939.     AH = 1Eh
  3940.     CX = channel number (00h COM1, 01h COM2, ...)
  3941.     DS:BX -> buffer for communications parameters (see #0251)
  3942. Return: DS:BX buffer filled
  3943. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  3944.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  3945. SeeAlso: AH=20h"HUNTER"
  3946.  
  3947. Format of HUNTER 16 communications parameters:
  3948. Offset    Size    Description    (Table 0251)
  3949.  00h    BYTE    communications type (00h IBM, nonzero Husky)
  3950.  01h    BYTE    port number (00h COM1, 01h COM2)
  3951.  02h    BYTE    baud rate (00h 110 bps, 01h 150, 02h 300, 03h 600, 04h 1200,
  3952.           05h 2400, 06h 4800, 07h 9600, 08h 19200, 09h 38400)
  3953.  03h    BYTE    data bits (01h seven, 02h eight)
  3954.  04h    BYTE    parity (00h none, 01h odd, 02h even)
  3955.  05h    BYTE    stop bits (00h one, 01h two)
  3956.  06h    BYTE    handshake (see #0252)
  3957.  07h    BYTE    handshake protocol (00h none, 01h Xon/Xoff, 02h HWK3780)
  3958.  08h    BYTE    Nulls after CR (0-20)
  3959.  09h    BYTE    LF (00h off, 01h on)
  3960.  0Ah    BYTE    Serig. 0..7Fh: Ignore this character
  3961.                80h: Serig off
  3962.  0Bh    BYTE    echo (00h off, 01h on)
  3963.  0Ch    BYTE    transmit timeout in seconds (1-60) or 00h to disable
  3964.  0Dh    BYTE    receive timeout in seconds (1-60) or 00h to disable
  3965.  0Eh  5 BYTEs    reserved
  3966.  
  3967. Bitfields for HUNTER 16 handshake:
  3968. Bit(s)    Description    (Table 0252)
  3969.  0-1    0: RTS off, 1: RTS hold, 2: RTS true
  3970.  2    DTR enabled
  3971.  4    CTS enabled
  3972.  5    DSR enabled
  3973.  6    DCD enabled
  3974. --------S-141F-------------------------------
  3975. INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
  3976.     AH = 1Fh
  3977.     DX = port number
  3978.     AL = direction
  3979.         00h read modem control register
  3980.         Return: BL = modem control register (see #0253)
  3981.             AH = status
  3982.         01h write modem control register
  3983.         BL = modem control register (see #0253)
  3984.         Return: AX = status
  3985. Notes:    this function is intended to exactly emulate the PS/2 BIOS AH=05h call
  3986.     X00 forces BL bit 3 set (interrupts cannot be disabled)
  3987. SeeAlso: AH=00h,AH=05h"SERIAL"
  3988.  
  3989. Bitfields for X00 FOSSIL modem control register:
  3990. Bit(s)    Description    (Table 0253)
  3991.  0    data terminal ready
  3992.  1    request to send
  3993.  2    OUT1
  3994.  3    OUT2 (interrupts) enabled
  3995.  4    LOOP
  3996.  5-7    reserved
  3997. --------S-1420-------------------------------
  3998. INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
  3999.     AH = 20h
  4000.     DX = port number
  4001. Return: AH = 00h if character was available
  4002.         AL = next character (removed from receive buffer)
  4003.     AX = FFFFh if no character available
  4004. SeeAlso: AH=0Ch,AH=21h"X00"
  4005. --------S-1420-------------------------------
  4006. INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
  4007.     AH = 20h
  4008.     AL = logical port (01h COM1, 02h COM2)
  4009.     DX = physical port number
  4010. Return: AX = status
  4011.         0000h successful
  4012.         FFFFh failed
  4013. SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
  4014. --------S-1420-------------------------------
  4015. INT 14 - MultiDOS Plus - INITIALIZE PORT
  4016.     AH = 20h
  4017.     AL = port parameters (see #0204 at AH=00h"SERIAL")
  4018.     DX = port number (0-3)
  4019. Return: AH = status
  4020.         00h successful
  4021.         41h no such port
  4022.         64h monitor mode already active
  4023. SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
  4024. --------S-1420-------------------------------
  4025. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHECK OUTPUT QUEUE
  4026.     AH = 20h
  4027.     DX = port number
  4028. Return: AX = number of bytes in output buffer
  4029. SeeAlso: AH=0Ah"Digiboard"
  4030. --------S-1420------------------------------------
  4031. INT 14 - HUNTER 16 - SELECT COMMS PARAMETERS
  4032.     AH = 20h
  4033.     CX = channel number (00h COM1, 01h COM2, ...)
  4034.     DS:BX -> buffer with communications parameter (see #0251)
  4035. Return: AX = status
  4036.         0000h successful
  4037.         0001h invalid parameter
  4038. SeeAlso: AH=1Eh"HUNTER",AH=21h"HUNTER"
  4039. --------S-1421-------------------------------
  4040. INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
  4041.     AH = 21h
  4042.     AL = character
  4043.     DX = port number
  4044. Return: nothing
  4045. Notes:    the given character is inserted at the end of the receive buffer as if
  4046.       it had just arrived from the serial port; all normal receive
  4047.       processing (XON/XOFF, ^C/^K) is performed on the character
  4048.     fully re-entrant
  4049. SeeAlso: AH=20h"X00"
  4050. --------S-1421-------------------------------
  4051. INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
  4052.     AH = 21h
  4053.     DX = physical port number
  4054. Return: AX = status
  4055.         0000h successful
  4056.         FFFFh failed
  4057. SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
  4058. --------S-1421-------------------------------
  4059. INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
  4060.     AH = 21h
  4061.     AL = character to send
  4062.     DX = port number
  4063. Return: AH = status (see #0254)
  4064. Note:    monitor mode must have been turned on with AH=24h before calling
  4065. SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
  4066.  
  4067. (Table 0254)
  4068. Values for MultiDOS Plus status:
  4069.  00h    successful
  4070.  39h    no DSR or CTS
  4071.  3Ch    no DSR
  4072.  3Bh    no CTS
  4073.  41h    no such port
  4074.  42h    monitor mode not active
  4075.  97h    timed out
  4076. --------S-1421-------------------------------
  4077. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT CHARACTER, WITH TIMEOUT
  4078.     AH = 21h
  4079.     AL = char to send
  4080.     DX = port number
  4081.     SI = timeout in timer ticks (0000h = default)
  4082. Return: after character is sent or timeout expires
  4083. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  4084.       operating system by The Software Link, Inc.
  4085. SeeAlso: AH=01h,AH=0Eh"Digiboard",AH=22h"PC-MOS"
  4086. --------S-1421------------------------------------
  4087. INT 14 - HUNTER 16 - EXTENDED CONTROL
  4088.     AH = 21h
  4089.     AL = command
  4090.         01h force transmission of buffer
  4091.         02h clear transmit buffer
  4092.         03h clear receive buffer
  4093.     DX = port (00h COM1, 01h COM2)
  4094. Return: AH = extended status
  4095. Desc:    executes the command on the selected port
  4096. SeeAlso: AH=1Eh"HUNTER",AH=20h"HUNTER",AH=22h"HUNTER",AH=24h"HUNTER"
  4097. --------S-1422-------------------------------
  4098. INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
  4099.     AH = 22h
  4100.     AL = logical port (01h COM1, 02h COM2)
  4101. Return: AX = status (0000h successful)
  4102. SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
  4103. --------S-1422-------------------------------
  4104. INT 14 - MultiDOS Plus - RECEIVE CHARACTER
  4105.     AH = 22h
  4106.     DX = port number
  4107. Return: AH = status (see also AH=21h"MultiDOS")
  4108.         00h successful
  4109.         AL = character
  4110.         3Dh framing and parity error
  4111.         3Eh overrun error
  4112.         3Fh framing error
  4113.         40h parity error
  4114.         96h ring buffer overflow
  4115. Note:    if no character is available, this function waits until a character
  4116.       arrives or an implementation-dependent timeout elapses
  4117. SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
  4118. --------S-1422-------------------------------
  4119. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RECEIVE CHARACTER, WITH TIMEOUT
  4120.     AH = 22h
  4121.     DX = port number
  4122.     SI = timeout in timer ticks (0000h = default)
  4123. Return: AH = port status (see also #0208 at AH=03h)
  4124.          bit 7 = 1 indicates time-out
  4125.     AL = character received
  4126. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  4127.       operating system by The Software Link, Inc.
  4128. SeeAlso: AH=02h,AH=0Fh"Digiboard",AH=21h"PC-MOS"
  4129. --------S-1422------------------------------------
  4130. INT 14 - HUNTER 16 - EXTENDED STATUS
  4131.     AH = 22h
  4132.     DX = port (00h COM1, 01h COM2)
  4133. Return: AH = extended status
  4134.     BX = number of characters in input buffer
  4135.     CX = number of characters in output buffer
  4136. Desc:    returns the most recent Extended Status code for the port
  4137. SeeAlso: AH=21h"HUNTER"
  4138. --------S-1423-------------------------------
  4139. INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
  4140.     AH = 23h
  4141.     AL = logical port (01h COM1, 02h COM2)
  4142.     DH = user ID
  4143.     DL = process ID (DH,DL both FFh for current task)
  4144. Return: AL = MW386 port mode (see #0255)
  4145.     CX = MW386 port number
  4146.     DH = owner's user ID
  4147.     DL = owner's task ID
  4148. SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
  4149.  
  4150. Bitfields for MW386 port mode:
  4151. Bit(s)    Description    (Table 0255)
  4152.  0    port is shared (spooler only)
  4153.  1    port is spooled instead of direct (spooler only)
  4154.  2    port is assigned as logical COM device, not in spooler
  4155.  3    port is free
  4156. --------S-1423-------------------------------
  4157. INT 14 - MultiDOS Plus - GET PORT STATUS
  4158.     AH = 23h
  4159.     DX = port number
  4160. Return: AH = line status (see #0208 at AH=03h)
  4161.     AL = modem status (see #0209 at AH=03h)
  4162. SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
  4163. --------S-1423-------------------------------
  4164. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DECLARE PORT OWNERSHIP
  4165.     AH = 23h
  4166.     DX = port number
  4167.     BX = TCB segment/selector address of owner task
  4168. Return: nothing
  4169. SeeAlso: AH=0Dh"Digiboard",AH=21h"PC-MOS",AH=22h"PC-MOS"
  4170. --------S-1423------------------------------------
  4171. INT 14 - HUNTER 16 - CONTROL HANDSHAKE LINES
  4172.     AH = 23h
  4173.     BH = handshake line to set (00h RTS, 01h DTR)
  4174.     BL = new level (00h low, 01h high)
  4175. Return: nothing
  4176. Desc:    sets the handshake lines of COM1 to the desired level
  4177. SeeAlso: AH=21h"HUNTER",AH=24h"HUNTER"
  4178. --------S-1424-------------------------------
  4179. INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
  4180.     AH = 24h
  4181.     CX = physical I/O port number
  4182.     DS:DX -> configuration table (see #0256)
  4183. Return: AH = 00h
  4184. Note:    invalid port numbers are merely ignored
  4185. SeeAlso: INT 17/AH=96h
  4186.  
  4187. Format of Alloy MW386 configuration table:
  4188. Offset    Size    Description    (Table 0256)
  4189.  00h    BYTE    baud rate (see #0257)
  4190.  01h    BYTE    data bits (00h=5, 01h=6, 02h=7, 03h=8)
  4191.  02h    BYTE    parity (00h none, 01h odd, 02h even)
  4192.  03h    BYTE    stop bits (00h=1, 01h=2)
  4193.  04h    BYTE    receive flow control
  4194.         00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
  4195.  05h    BYTE    transmit flow control (as for receive)
  4196.  
  4197. (Table 0257)
  4198. Values for Alloy MW386 baud rate:
  4199.  00h    38400
  4200.  01h    19200
  4201.  02h    9600
  4202.  03h    7200
  4203.  04h    4800
  4204.  05h    3600
  4205.  06h    2400
  4206.  07h    2000
  4207.  08h    1200
  4208.  09h    600
  4209.  0Ah    300
  4210.  0Bh    150
  4211.  0Ch    134.5
  4212. SeeAlso: #0213
  4213. --------S-1424-------------------------------
  4214. INT 14 - MultiDOS Plus - SET MONITOR MODE
  4215.     AH = 24h
  4216.     AL = port status storage
  4217.         00h single status for entire receive buffer
  4218.         01h separate status kept for each byte in receive buffer
  4219.     DX = port number
  4220. Return: AH = status
  4221.         00h successful
  4222.         3Ah invalid status storage specified
  4223.         41h no such port
  4224.         64h monitor mode already active
  4225. Note:    in monitor mode, MultiDOS redirects all BIOS video output to a serial
  4226.       port
  4227. SeeAlso: AH=20h"MultiDOS",AH=25h
  4228. --------S-1424-------------------------------
  4229. INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - ???
  4230.     AH = 24h
  4231. Return: ???
  4232. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  4233.       operating system by The Software Link, Inc.
  4234. --------S-1424------------------------------------
  4235. INT 14 - HUNTER 16 - CONTROL CTS HANDSHAKING
  4236.     AH = 24h
  4237.     AL = new CTS handshake state for COM1 (00h disabled, 01h enabled)
  4238. Return: nothing
  4239. SeeAlso: AH=23h"HUNTER",AH=25h"HUNTER",AH=26h"HUNTER"
  4240. --------S-1425-------------------------------
  4241. INT 14 - MultiDOS Plus - CLEAR BUFFERS
  4242.     AH = 25h
  4243.     AL = function
  4244.         00h only clear buffers
  4245.         01h clear buffers and deactivate
  4246.     DX = port number
  4247. Return: AH = status
  4248.         00h successful
  4249.         3Ah invalid function
  4250.         41h no such port
  4251.         42h monitor mode not active
  4252. SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
  4253. --------S-1425------------------------------------
  4254. INT 14 - HUNTER 16 - CONTROL RS232 DRIVERS
  4255.     AH = 25h
  4256.     AL = new state of RS232 drivers (00h off, 01h on)
  4257. Return: nothing
  4258. Note:    this function can be used to save power by turning off the RS232
  4259.       drivers.  It can also be used to turn on the RS232 drivers before
  4260.       connecting to a remote system to avoid "garbage" while the drivers
  4261.       turn on.
  4262. SeeAlso: AH=23h"HUNTER",AH=24h"HUNTER",AH=26h"HUNTER"
  4263. --------S-1426------------------------------------
  4264. INT 14 - HUNTER 16 - CONTROL RI POWER UP
  4265.     AH = 26h
  4266.     AL = 00h enable RI power up
  4267.         else disable RI power up
  4268. Return: nothing
  4269. Desc:    control whether the Ring Indicator handshake can power up the Hunter
  4270. --------S-1427-------------------------------
  4271. INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
  4272.     AH = 27h
  4273.     DX = port number
  4274. Return: AH = status
  4275.         00h successful
  4276.         41h no such port
  4277.         42h monitor mode not active
  4278.     AL = number of characters in receive buffer
  4279. --------S-1427------------------------------------
  4280. INT 14 - HUNTER 16 - GET INSTALLED PROTOCOLS COUNT
  4281.     AH = 27h
  4282.     AL = number of extended protocols installed (since last call)
  4283. Return: AL = total number installed, including new ones
  4284. Desc:    Returns the number of extended communication protocols installed
  4285. SeeAlso: AH=25h"HUNTER",AH=28h"HUNTER"
  4286. --------S-1428------------------------------------
  4287. INT 14 - HUNTER 16 - GET PROTOCOL NAME
  4288.     AH = 28h
  4289.     AL = protocol handle
  4290.     DS:BX -> 8 character buffer for protocol name
  4291. Return: AH = status
  4292.         00h successful
  4293.         DS:BX buffer filled with the protocol name
  4294.         FFh failed
  4295. SeeAlso: AH=27h"HUNTER",AH=29h"HUNTER"
  4296. --------S-1429------------------------------------
  4297. INT 14 - HUNTER 16 - GET PROTOCOL HANDLE
  4298.     AH = 29h
  4299.     DS:BX -> buffer containing the protocol name
  4300. Return: AH = status
  4301.         00h successful
  4302.         AL = handle
  4303.         FFh failed
  4304. SeeAlso: AH=28h"HUNTER",AH=2Ah"HUNTER"
  4305. --------S-142A------------------------------------
  4306. INT 14 - HUNTER 16 - EXTENDED PROTOCOL MENU
  4307.     AH = 2Ah
  4308.     AL = protocol handle
  4309. Return: AH = status
  4310.         00h successful
  4311.         FFh failed
  4312.     AL = menu handle
  4313. SeeAlso: AH=29h"HUNTER",AH=2Bh"HUNTER"
  4314. --------S-142B------------------------------------
  4315. INT 14 - HUNTER 16 - GET EXTENDED PROTOCOL PARAMETERS
  4316.     AH = 2Bh
  4317.     AL = protocol handle
  4318.     DS:BX -> buffer for extended protocol parameters
  4319. Return: AH = status
  4320.         00h successful
  4321.         DS:BX buffer filled with extended parameters
  4322.         FFh failed
  4323. SeeAlso: AH=2Ah"HUNTER"
  4324. --------S-142C00----------------------------------
  4325. INT 14 - HUNTER 16 - GET DTR
  4326.     AX = 2C00h
  4327. Return: AH = 00h
  4328.     BL = current state
  4329.         00h     normal DTR operation
  4330.         else DTR is forced high
  4331. Desc:    Indicates whether the DTR signal on COM1 is forced high
  4332. Note:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  4333.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  4334. SeeAlso: AH=2Ch"SET DTR"
  4335. --------S-142C------------------------------------
  4336. INT 14 - HUNTER 16 - SET DTR
  4337.     AH = 2Ch
  4338.     AL nonzero
  4339.     BL = new state
  4340.         00h     normal operation
  4341.         else force DTR high
  4342. Return: AH = 00h
  4343. Desc:    determine whether the DTR signal on COM1 should be forced high
  4344. SeeAlso: AX=2C00h
  4345. --------N-1436-------------------------------
  4346. INT 14 - ComShare - INSTALLATION CHECK
  4347.     AH = 36h
  4348. Return: AX = 4353h ('CS') if installed
  4349.         BX = bitmap of installed ports (bit 0: COM1 is gateway, etc.)
  4350.         CX reserved for future use
  4351.         WORD DX:[0100h] = ComShare version number
  4352. Program: The ComShare System is a modem-sharing program for NetBIOS and
  4353.       NetWare-based networks by NashaKala Corporation
  4354. Note:    ComShare supports the standard BIOS INT 14h calls with a slight
  4355.       change in the interpretation of speed values (see #0213 at AH=04h)
  4356. SeeAlso: AH=00h,AH=04h,AX=F4FFh
  4357. --------t-144000-----------------------------
  4358. INT 14 - I1541 - INSTALLATION CHECK
  4359.     AX = 4000h
  4360. Return: AX = 1541h if installed
  4361.         BH = I1541 major version (BCD)
  4362.         BL = I1541 minor version (BCD)
  4363.         CX = 0000h
  4364. --------t-144001-----------------------------
  4365. INT 14 - I1541 - TEST IF 1541 CABLE CONNECTED
  4366.     AX = 4001h
  4367. Return: CF clear if connected
  4368.         BL = LPT number where 1541 cable is connected (1..3)
  4369.     CF set if cable not connected
  4370. Desc:    scan all the LPT ports searching for the adapter cable
  4371. SeeAlso: AX=4000h
  4372. --------t-144002-----------------------------
  4373. INT 14 - I1541 - SELECT LPT PORT FOR OUTPUT
  4374.     AX = 4002h
  4375.     BL = LPT number (1..3)
  4376. Return: CF clear if successful
  4377.     CF set otherwise
  4378. Desc:    force the input output routines to work on the cable placed on LPT BL
  4379. SeeAlso: AX=4001h
  4380. --------t-144003-----------------------------
  4381. INT 14 - I1541 - RESET ALL DEVICES
  4382.     AX = 4003h
  4383. Return: nothing
  4384. Desc:    send a reset pulse of 100ms to all CBM devices
  4385. Note:    it is necessary to wait about 2 seconds after reset before executing
  4386.       other    instructions
  4387. SeeAlso: AX=4000h,AX=4004h
  4388. --------t-144004-----------------------------
  4389. INT 14 - I1541 - SEND LISTEN SIGNAL
  4390.     AX = 4004h
  4391.     BH = device number (0..15)
  4392. Return: CF clear if successful
  4393.     CF set on error
  4394.         AL = error number (see #0258)
  4395. SeeAlso: AX=4005h,AX=4006h
  4396.  
  4397. (Table 0258)
  4398. Values for I1541 error number:
  4399.  00h    device not present
  4400.  01h    listener not ready
  4401.  02h    missing EOI time-out
  4402.  03h    EOI not completed
  4403.  04h    data not released
  4404.  05h    frame error
  4405. --------t-144005-----------------------------
  4406. INT 14 - I1541 - SEND SECONDARY ADDRESS FOR LISTEN
  4407.     AX = 4005h
  4408.     BL = channel number and mode (see #0259)
  4409. Return: CF clear if successful
  4410.     CF set on error
  4411.         AL = error number (see #0258)
  4412. SeeAlso: AX=4004h,AX=4006h
  4413.  
  4414. Bitfields for I1541 channel number and mode:
  4415. Bit(s)    Description    (Table 0259)
  4416.  7-4    mode
  4417.     0110 read/write
  4418.     1110 close channel
  4419.     1111 open channel
  4420.  3-0    channel number
  4421. --------t-144006-----------------------------
  4422. INT 14 - I1541 - SEND UNLISTEN SIGNAL
  4423.     AX = 4006h
  4424. Return: CF clear if successful
  4425.     CF set on error
  4426.         AL = error number (see #0258)
  4427. SeeAlso: AX=4004h,AX=4005h
  4428. --------t-144007-----------------------------
  4429. INT 14 - I1541 - SEND TALK SIGNAL
  4430.     AX = 4007h
  4431.     BH = device number (0-15)
  4432. Return: CF clear if successful
  4433.     CF set on error
  4434.         AL = error number (see #0258)
  4435. SeeAlso: AX=4008h,AX=4009h
  4436. --------t-144008-----------------------------
  4437. INT 14 - I1541 - SEND SECONDARY ADDRESS FOR TALK
  4438.     AX = 4008h
  4439.     BL = channel number and mode (see #0259)
  4440. Return: CF clear if successful
  4441.     CF set on error
  4442.         AL = error number (see also #0258)
  4443.         40h turn around time-out
  4444. SeeAlso: AX=4007h,AX=4009h
  4445. --------t-144009-----------------------------
  4446. INT 14 - I1541 - SEND UNTALK SIGNAL
  4447.     AX = 4009h
  4448. Return: CF clear if successful
  4449.     CF set on error
  4450.        AL = error number (see #0258)
  4451. SeeAlso: AX=4007h,AX=4008h
  4452. --------t-14400A-----------------------------
  4453. INT 14 - I1541 - SEND A BYTE TO A DEVICE
  4454.     AX = 400Ah
  4455.     BL = byte to send
  4456.     CL = last-byte flag
  4457.         00h more bytes follow
  4458.         01h this is the last byte to be sent
  4459. Return: CF clear if successful
  4460.     CF set on error
  4461.         AL = error number (see #0258)
  4462. SeeAlso: AX=4000h,AX=400Bh
  4463. --------t-14400B-----------------------------
  4464. INT 14 - I1541 - RECEIVE A BYTE FROM A DEVICE
  4465.     AX = 400Bh
  4466. Return: CF clear if successful
  4467.         AL = byte received
  4468.         CL = last-byte flag
  4469.         00h more bytes to follow
  4470.         01h received byte is the last
  4471.     CF set on error
  4472.         AL = error number
  4473.         80h EOI response required
  4474.         81h talker not ready
  4475.         82h clock not set
  4476.         83h clock not released
  4477.         CL = 00h
  4478. SeeAlso: AX=4000h,AX=400Ah
  4479. --------t-14400C-----------------------------
  4480. INT 14 - I1541 - WAIT
  4481.     AX = 400Ch
  4482.     CX = number of 838ns microticks to wait (0000h means 65536, ~55ms)
  4483. Return: after wait period elapses
  4484. SeeAlso: AX=4000h,AX=400Dh
  4485. --------t-14400D-----------------------------
  4486. INT 14 - I1541 - LONGWAIT
  4487.     AX = 400Dh
  4488.     DX:CX = number of 838ns microticks to wait
  4489.           (0000h:0000h means 4294967296, about one hour)
  4490. Example: To wait 1s you must set DX:CX=(1s/838ns)=1193180
  4491. SeeAlso: AX=4000h,AX=400Ch
  4492. --------t-14400E-----------------------------
  4493. INT 14 - I1541 - GET INFO
  4494.     AX = 400Eh
  4495. Return: AX = LPT port I/O address in use (0000h if no cable in use)
  4496.     BL = LPT number (1..3) in use (00h if no cable in use)
  4497.     CF set if the cable is auto-detectable
  4498.     CF clear if cable could not be auto-detected or is not present
  4499. SeeAlso: AX=4000h
  4500. --------S-1456-------------------------------
  4501. INT 14 U - BWCOM14 - INSTALLATION CHECK
  4502.     AH = 56h
  4503. Return: CX = 0001h if installed
  4504. Program: BWCOM14 is a network serial port emulator (simulating a Hayes modem
  4505.       connected to the serial port) distributed as part of the
  4506.       Beame&Whiteside BW-NFS package
  4507. SeeAlso: AH=57h,AH=58h,INT 2F/AX=DF00h/BX=5445h
  4508. --------S-1457-------------------------------
  4509. INT 14 U - BWCOM14 - INITIALIZE
  4510.     AH = 57h
  4511.     DL = port number
  4512. Return: AL = initialization status (00h successful, 01h already initialized)
  4513.     CX = port status (0001h port redirected, 0002h and FFFFh failed)
  4514. Note:    after this call, all invocations of INT 14/AH=00h-03h for the specified
  4515.       port will be handled by BWCOM14 until AH=58h is called
  4516. SeeAlso: AH=00h"SERIAL",AH=56h,AH=58h
  4517. --------S-1458-------------------------------
  4518. INT 14 U - BWCOM14 - SHUTDOWN
  4519.     AH = 58h
  4520. Return: CX = status (0001h successful, 0002h not initialized)
  4521. Note:    after this call, BWCOM14 will no longer redirect the COM port
  4522. SeeAlso: AH=56h,AH=57h
  4523. --------N-146F--BXFFFE-----------------------
  4524. INT 14 U - Connection Manager - ???
  4525.     AH = 6Fh
  4526.     BX = FFFEh
  4527.     ???
  4528. Return: ???
  4529. Program: Connection Manager by Softwarehouse Corp. permits the sharing of
  4530.       serial ports over an IPX or NetBIOS-based network
  4531. --------N-146F--BXFFFF-----------------------
  4532. INT 14 - Connection Manager - INSTALLATION CHECK
  4533.     AH = 6Fh
  4534.     BX = FFFFh
  4535. Return: DX:BX -> Connection Manager Communication Table if installed
  4536.     BX = FFFFh if not installed
  4537. SeeAlso: AH=0Dh/DX=FFFFh
  4538. --------S-146F00-----------------------------
  4539. INT 14 - HP Vectra EX-BIOS - "F14_INQUIRE" - INSTALLATION CHECK
  4540.     AX = 6F00h
  4541.     BX <> 4850h (usually set to 0000h for simplicity)
  4542. Return: BX = 4850h ("HP") if HP Extended BIOS serial port extensions available
  4543.     AX destroyed
  4544. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  4545. SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,INT 10/AX=6F00h,INT 14/AX=6F00h
  4546. SeeAlso: INT 17/AX=6F00h,INT 33/AX=6F00h
  4547. --------S-146F01-----------------------------
  4548. INT 14 - HP Vectra EX-BIOS - "F14_EXINIT" - INITIALIZE SERIAL PORT
  4549.     AX = 6F01h
  4550.     BX = port attributes (see #0260)
  4551.     DX = port number (0-3)
  4552. Return: AH = line status (see #0208)
  4553.     AL = modem status (see #0209)
  4554. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  4555. SeeAlso: AX=6F00h
  4556.  
  4557. Bitfields for HP Vectra Extended BIOS serial port attributes:
  4558. Bit(s)    Description    (Table 0260)
  4559.  8-5    data rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200)
  4560.  4-3    parity
  4561.     00 none
  4562.     01 odd
  4563.     10 none
  4564.     11 even
  4565.  2    stop bits (0 = one, 1 = two)
  4566.  1-0    bits per character
  4567.     10 seven-bit characters
  4568.     11 eight-bit characters
  4569.     0x undefined
  4570. --------S-146F02-----------------------------
  4571. INT 14 - HP Vectra EX-BIOS - "F14_PUT_BUFFER" - TRANSMIT BUFFER
  4572.     AX = 6F02h
  4573.     CX = number of characters in buffer
  4574.     DX = port number (0-3)
  4575.     ES:DI -> buffer containing characters
  4576. Return: AH = line status (see #0208)
  4577.     AL = modem status (see #0209)
  4578.     CX = number of bytes actually sent
  4579.     ES:DI -> next byte to be transferred (unchanged if all bytes sent)
  4580. Desc:    send characters from the specified buffer until all characters have
  4581.       been sent or an error/timeout is encountered
  4582. Note:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  4583. SeeAlso: AX=6F00h,AX=6F03h,AX=6F04h,INT 17/AX=6F02h
  4584. --------S-146F03-----------------------------
  4585. INT 14 - HP Vectra EX-BIOS - "F14_GET_BUFFER" - READ DATA INTO BUFFER
  4586.     AX = 6F03h
  4587.     CX = size of buffer
  4588.     DX = port number (0-3)
  4589.     ES:DI -> buffer for received characters
  4590. Return: AH = line status (see #0208)
  4591.     ---on error (AH bit 7 set)---
  4592.        AL = 00h
  4593.        ES:DI -> next byte to be transferred
  4594.     ---if successful---
  4595.        AL = last byte read
  4596.        ES:DI unchanged
  4597.     CX = number of bytes read
  4598. Desc:    read characters into the specified buffer until the buffer is filled
  4599.       or a timeout occurs
  4600. Notes:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  4601.     polls the Data Set Ready modem status and Data Ready line status bits
  4602.       to determine when characters are available
  4603. SeeAlso: AX=6F00h,AX=6F02h,AX=6F04h
  4604. --------S-146F04-----------------------------
  4605. INT 14 - HP Vectra EX-BIOS - "F14_TRM_BUFFER" - READ UNTIL TERMINATOR
  4606.     AX = 6F04h
  4607.     BL = lowest termination character
  4608.     BH = highest termination character
  4609.     CX = size of buffer
  4610.     DX = port number (0-3)
  4611.     ES:DI -> buffer for received characters
  4612. Return: AH = line status (see #0208)
  4613.     ---on error (AH bit 7 set)---
  4614.        AL = 00h
  4615.        ES:DI -> next byte to be transferred
  4616.     ---if successful---
  4617.        AL = last byte read
  4618.        ES:DI unchanged
  4619.     CX = number of bytes read
  4620. Desc:    read characters into the specified buffer until the buffer is filled,
  4621.       a character in the specified range is received, or a timeout occurs
  4622. Notes:    supported by original HP Vectra AT and by ES/QS/RS series Vectras
  4623.     polls the Data Set Ready modem status and Data Ready line status bits
  4624.       to determine when characters are available
  4625. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h
  4626. --------S-147E-------------------------------
  4627. INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
  4628.     AH = 7Eh
  4629.     AL = code assigned to external application (80h-BFh)
  4630.         80h reserved for communications FOSSIL
  4631.         81h video FOSSIL
  4632.         82h reserved for keyboard FOSSIL
  4633.         83h reserved for system FOSSIL
  4634.     ES:DX -> entry point
  4635. Return: AX = 1954h
  4636.     BL = code assigned to application (same as input AL)
  4637.     DH = 00h failed
  4638.          01h successful
  4639. SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
  4640. --------S-147F-------------------------------
  4641. INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
  4642.     AH = 7Fh
  4643.     AL = code assigned to external application
  4644.     ES:DX -> entry point
  4645. Return: AX = 1954h
  4646.     BL = code assigned to application (same as input AL)
  4647.     DH = 00h failed
  4648.          01h successful
  4649. SeeAlso: AH=7Eh
  4650. --------S-1480-------------------------------
  4651. INT 14 - COMMUNICATIONS FOSSIL
  4652.     AH = 80h
  4653. SeeAlso: AH=7Eh
  4654. --------S-1480-------------------------------
  4655. INT 14 - COURIERS.COM - INSTALLATION CHECK
  4656.     AH = 80h
  4657. Return: AH = E8h if loaded
  4658. Program: COURIERS is a TSR utility by PC Magazine
  4659. --------S-148000-----------------------------
  4660. INT 14 - ARTICOM - INSTALLATION CHECK
  4661.     AX = 8000h
  4662. Return: AL = FFh if installed
  4663.         BH = major version
  4664.         BL = minor version
  4665. Program: ArtiCom is an asynchronous communications driver by Artisoft which
  4666.       works on top of NetBIOS and allows modem/serial-port sharing by
  4667.       programs using INT 14 for serial I/O.
  4668. Note:    ArtiCom supports 32 simultaneous COM ports using multiport cards and
  4669.       drivers
  4670. SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=05h,AX=8001h,AX=8002h
  4671. --------S-148000-----------------------------
  4672. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET ERROR CODE AND BUFFER STATUS
  4673.     AX = 8000h
  4674.     DX = port number
  4675. Return: AX = code for last error (see #0261)
  4676.     BX = number of characters in output buffer
  4677.     CX = nubmer of characters in input buffer
  4678.     DX = state flag (see #0262)
  4679. Program: COMM-DRV is a universal serial communications driver by Willies'
  4680.       Computer Software Company, which supports standard INT 14 and
  4681.       FOSSIL calls as well as its own interfaces
  4682. SeeAlso: AX=8001h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  4683.  
  4684. (Table 0261)
  4685. Values for COMM-DRV error code:
  4686.  00h    no error
  4687.  01h    buffer not set or attempted to change buffer for active port
  4688.  02h    port not active
  4689.  03h    transmit buffer full
  4690.  04h    receive buffer full
  4691.  05h    syntax error
  4692.  06h    invalid buffer size
  4693.  07h    invalid port
  4694.  08h    handler changed
  4695.  09h    invalid baud rate
  4696.  0Ah    invalid parity setting
  4697.  0Bh    invalid data length
  4698.  0Ch    invalid number of stop bits
  4699.  0Dh    invalid protocol number
  4700.  0Eh    IRQ changed
  4701.  0Fh    port changged
  4702.  10h    invalid threshold setting
  4703.  11h    invalid IRQ number
  4704.  12h    interrupts not enabled
  4705.  13h    invalid break syntax
  4706.  14h    fatal error
  4707.  15h    CTS error
  4708.  16h    invalid RS232 I/O port address
  4709.  17h    environment variable not set
  4710.  18h    error on IOCTL call
  4711.  19h    error during atexit cleanup
  4712.  1Ah    error mapping for direct calls
  4713.  1Bh    error opening device
  4714.  1Ch    unable to allocate memory
  4715.  1Dh    error on external micro card
  4716.  1Eh    card changed error
  4717.  1Fh    card type error
  4718.  20h    not supported
  4719.  21h    parent port error
  4720.  22h    card command buffer full
  4721.  23h    no subdevice for this port
  4722.  24h    unknown error
  4723.  25h    external card busy
  4724.  26h    no more timers available
  4725.  27h    INT 14 vector changed
  4726.  28h    INT 08 vector changed
  4727.  29h    DPMI error
  4728.  2Ah    TSR buffer too small (or nonexistent)
  4729.  2Bh    out of asynchronous resources
  4730.  2Ch    out of timer resources
  4731.  2Dh    out of "other" timer resources
  4732.  2Eh    file I/O error
  4733.  2Fh    hardware memory > 64K
  4734.  
  4735. Bitfields for state flag :
  4736. Bit(s)    Description    (Table 0262)
  4737.  0    port is active
  4738.  1    output throttled (XOFF received, or DSR or CTS reset)
  4739.  2    input throttled (XOFF sent, or DTR or RTS reset)
  4740. --------S-148001-----------------------------
  4741. INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
  4742.     AX = 8001h
  4743. Return: AX = error code, if error (see #0264)
  4744. SeeAlso: AX=8000h"ARTICOM",AX=8002h"ARTICOM",AX=8003h"ARTICOM"
  4745. Index:    uninstall;ARTICOM
  4746. --------S-148001-----------------------------
  4747. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  4748.     AX = 8001h
  4749.     DX = port number
  4750. Return: BX:DI -> Port Control Block (see #0271)
  4751. SeeAlso: AX=8000h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
  4752. --------S-148002-----------------------------
  4753. INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
  4754.     AX = 8002h
  4755.     ES:DI -> buffer for redirector status structure (see #0263)
  4756. Return: AX = error code, if error (see #0264)
  4757. SeeAlso: AX=8000h"ARTICOM",AX=8003h"ARTICOM"
  4758.  
  4759. Format of ARTICOM redirector status:
  4760. Offset    Size    Description    (Table 0263)
  4761.  00h    WORD    redirector major and minor version numbers
  4762.  02h    WORD    redirectable ports found
  4763.  04h    WORD    redirectable ports + local ports found
  4764.  06h    WORD    redirector internal buffer size
  4765.  08h    WORD    maximum servers maintained
  4766.  0Ah    WORD    number of adapters found
  4767. --------S-148002-----------------------------
  4768. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
  4769.     AX = 8002h
  4770.     DX = port number
  4771. Return: AH bit 7 set on error
  4772.     AH bit 7 clear if successful
  4773.         BX:DI -> Port Control Block (see #0271) (modifyable portion only)
  4774. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8003h"COMM-DRV"
  4775. --------S-148003-----------------------------
  4776. INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
  4777.     AX = 8003h
  4778.     CX = error number to translate (see #0264)
  4779. Return: ES:DI -> ASCIZ error text or 0000h:0000h if unable to translate
  4780. SeeAlso: AX=8000h
  4781.  
  4782. (Table 0264)
  4783. Values for ARTICOM error codes:
  4784.  00h    "No error"
  4785.  01h    "An invalid port number was specified"
  4786.  02h    "Port is already redirected"
  4787.  03h    "Too many ports redirected"
  4788.  04h    "Cannot locate the server"
  4789.  05h    "Server is busy"
  4790.  06h    "Access denied"
  4791.  07h    "Resource in use"
  4792.  08h    "Resource in use - request queued"
  4793.  09h    "No such resource"
  4794.  0Ah    "Invalid username/password pair"
  4795.  0Bh    "Noncompatible version number"
  4796.  0Ch    "Can't remove from memory"
  4797.  0Dh    "Bad NETBIOS adapter number"
  4798.  0Eh    "No more entries in list"
  4799.  0Fh    "Resource is not available at this time"
  4800.  10h    "Invalid value to INT 14 call"
  4801. --------S-148003-----------------------------
  4802. INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET I/O BUFFER SIZES
  4803.     AX = 8003h
  4804.     DX = port number
  4805. Return: AX = number of characters in input buffer
  4806.     BX = input buffer size
  4807.     CX = number of characters in output buffer
  4808.     DX = output buffer size
  4809. SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8002h"COMM-DRV"
  4810. --------S-148004-----------------------------
  4811. INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
  4812.     AX = 8004h
  4813.     DX = port to redirect (COM1=0, COM2=1, ...)
  4814.     CH = attach type
  4815.     CL = adapter to use for attach, 0FFh to search all
  4816.     ES:DI -> attachment structure (see #0265)
  4817. Return: AX = error code, if error (see #0264)
  4818. Note:    The wildcard '*' is supported in the server and resource fields.  If
  4819.       wild cards are used then the first matching available server is
  4820.       attached.
  4821. SeeAlso: AX=8000h,AX=8003h,AX=8005h
  4822.  
  4823. Format of ARTICOM attachment structure:
  4824. Offset    Size    Description    (Table 0265)
  4825.  00h 16 BYTEs    server to look for attach
  4826.  10h 16 BYTEs    attach to resource name
  4827.  20h 16 BYTEs    username for attach
  4828.  30h 16 BYTEs    password for username or resource
  4829.  40h    BYTE    attach type
  4830.         00h normal
  4831.         01h queue if resource is in use (not yet supported in v1.00)
  4832. --------S-148005-----------------------------
  4833. INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
  4834.     AX = 8005h
  4835.     DX = port to detach (COM1=0, COM2=1, ...)
  4836. Return: AX = error code, if error (see #0264)
  4837. Note:    only a previously attached resource can be detached
  4838. SeeAlso: AX=8000h,AX=8003h,AX=8004h
  4839. --------S-148006-----------------------------
  4840. INT 14 - ARTICOM - GET RESOURCE INFORMATION
  4841.     AX = 8006h
  4842.     BX = remote port (COM1=0, COM2=1, ...)
  4843.     CL = adapter number, FFh to try all adapters
  4844.     ES:DI -> resource information structure (see #0266)
  4845.     DS:SI -> 16 byte server name. See note.
  4846. Return: AX = error code, if error (see #0264)
  4847.     BX = next remote port, recall to get next resource info
  4848. Note:    Wild cards supported in both the resource field and server name
  4849.       string DS:SI. If wild cards used then first matching available
  4850.       resource information is searched. Set the resource field to FFh to
  4851.       return all resources.
  4852. SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
  4853.  
  4854. Format of ARTICOM resource information structure:
  4855. Offset    Size    Description    (Table 0266)
  4856.  00h    BYTE    00h = free, else used
  4857.  01h 16 BYTEs    resource name
  4858.  11h 16 BYTEs    username of resource user
  4859.  21h    WORD    amount of time used
  4860.  23h    WORD    amount of time remaining
  4861.  53h 48 BYTEs    description of resource
  4862.  93h 64 BYTEs    initialization string for modem
  4863.  B3h 32 BYTEs    dial string for modem
  4864.  D3h 32 BYTEs    hang-up string for modem
  4865. --------S-148007-----------------------------
  4866. INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
  4867.     AX = 8007h
  4868.     DX = port index (COM1=0, COM2=1, ...)
  4869.     ES:DI -> buffer for port information structure (see #0267)
  4870. Return: CF clear if redirection info returned and port is redirected
  4871.     CF set if not a redirected port
  4872.     AX = error code, if error (see #0264)
  4873. SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
  4874.  
  4875. Format of ARTICOM port information structure:
  4876. Offset    Size    Description    (Table 0267)
  4877.  00h 16 BYTEs    server name resource is on
  4878.  10h    BYTE    adapter number server is on
  4879.  11h 16 BYTEs    resource name
  4880.  21h    WORD    remote port index, use to get additional information
  4881.  23h    WORD    buffer size
  4882.  25h    WORD    baud rate (see #0268)
  4883.  26h    BYTE    modem status register
  4884.  27h    BYTE    modem control register
  4885.  28h    BYTE    line status register
  4886.  29h    BYTE    line control register
  4887.  2Ah    BYTE    flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
  4888.  2Bh    WORD    send timeout in ticks
  4889.  2Dh    WORD    receive timeout in ticks
  4890.  2Fh    WORD    time used on remote port
  4891.  31h    WORD    time left before timeout
  4892.  33h    BYTE    if server changes allowed?
  4893.  34h    WORD    FFFFh (-1) if connection ok, else old port index
  4894.  
  4895. (Table 0268)
  4896. Values for ARTICOM baud rate:
  4897.  00h    110
  4898.  01h    150
  4899.  02h    300
  4900.  03h    600
  4901.  04h    1200
  4902.  05h    2400
  4903.  06h    4800
  4904.  07h    9600
  4905.  08h    19200
  4906.  09h    38400
  4907.  0Ah    57600
  4908.  0Bh    115200
  4909.  0Ch    134.5
  4910.  0Dh    1800
  4911.  0Eh    2000
  4912.  0Fh    3600
  4913.  10h    7200
  4914. SeeAlso: #0213
  4915. --------S-148008-----------------------------
  4916. INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
  4917.     AX = 8008h
  4918.     BX = server index (0,1,...)
  4919.     ES:DI -> server name structure (see #0269)
  4920. Return: AX = error code, if error (see #0264)
  4921.     BX = next remote port, repeat call to get next available server
  4922. Note:    the wildcard '*' is supported in the server name field.     Set the
  4923.       server name to FFh to search for all servers.
  4924. SeeAlso: AX=8000h,AX=8003h,AX=8007h
  4925.  
  4926. Format of ARTICOM server name structure:
  4927. Offset     Size      Description    (Table 0269)
  4928.   00h 16 BYTEs      (call) ASCIZ server name
  4929.   10h     BYTE      (ret) the adapter server is found
  4930. --------S-148009-----------------------------
  4931. INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS
  4932.     AX = 8009h
  4933.     BX = send timeout in ticks
  4934.     CX = receive timeout in ticks
  4935.     DX = port index (COM1=0, COM2=1, ...)
  4936. Return: nothing
  4937. SeeAlso: AX=8000h,AX=800Ah
  4938. --------S-14800A-----------------------------
  4939. INT 14 - ARTICOM - MODIFY FLOW CONTROL
  4940.     AX = 800Ah
  4941.     BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
  4942.     DX = port index (COM1=0, COM2=1, ...)
  4943. Return: AX = error code, if error (see #0264)
  4944. Note:    for attached ports only!
  4945. SeeAlso: AX=8000h,AX=8003h,AX=8009h
  4946. --------S-148025-----------------------------
  4947. INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
  4948.     AX = 8025h
  4949.     DS:DX -> address of trap function (see #0270) to call on read/write
  4950. Return: nothing
  4951. Note:    setting the vector to a user function allows the redirector's activity
  4952.       to be monitored.
  4953. SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
  4954.  
  4955. (Table 0270)
  4956. Values ARTICOM trap function is called with:
  4957.     AH = operation
  4958.         80h reading character
  4959.         81h writing character
  4960.     AL = character
  4961. Return: AX must be preserved
  4962.     far JUMP to old trap function (see AX=8035h)
  4963. --------S-148035-----------------------------
  4964. INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
  4965.     AX = 8035h
  4966. Return: ES:BX -> address of current send/receive routine
  4967. Note:    this function returns the address of the routine which is called
  4968.       inside A-REDIR.EXE each time a character is received or sent on the
  4969.       active COM port.
  4970. SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
  4971. --------S-1481-------------------------------
  4972. INT 14 - COURIERS.COM - CHECK IF PORT BUSY
  4973.     AH = 81h
  4974.     AL = port number (1-4)
  4975. Return: AH = 00h port available
  4976.          01h port exists but already in use
  4977.          02h port nonexistent
  4978. Program: COURIERS is a TSR utility by PC Magazine
  4979. SeeAlso: AH=83h,AH=8Dh
  4980. --------S-1481-------------------------------
  4981. INT 14 - COMM-DRV - EXTENDED INITIALIZATION
  4982.     AH = 81h
  4983.     BX:DI -> port control block (see #0271)
  4984.     DX = port number
  4985. Return: AH = line status register (see #0208)
  4986.         error if bit 7 set
  4987.     AL = modem status register (see #0209)
  4988. Program: COMM-DRV is a universal serial communications driver by Willies'
  4989.       Computer Software Company, which supports standard INT 14 and
  4990.       FOSSIL calls as well as its own interfaces
  4991. Note:    AX=8001h should be called first to fill in the port control block
  4992. SeeAlso: AH=00h,AX=8001h,AH=82h"COMM-DRV",AH=86h"COMM-DRV"
  4993.  
  4994. Format of COMM-DRV port control block:
  4995. Offset    Type    Description    (Table 0271)
  4996.  00h    WORD    port IO address
  4997.  02h    WORD    port IRQ
  4998.  04h    WORD    baud rate
  4999.  06h    WORD    parity
  5000.  08h    WORD    data bits
  5001.  0Ah    WORD    stop bits
  5002.  0Ch    WORD    break status (0000h off)
  5003.  0Eh    WORD    flow control protocol
  5004.  10h    BYTE    input block
  5005.  11h    BYTE    output block
  5006.  12h    WORD    low threshold
  5007.  14h    WORD    high threshold
  5008.  16h    WORD    segment of buffer
  5009.  18h    WORD    offset of buffer
  5010.  1Ah    WORD    input buffer length
  5011.  1Ch    WORD    output buffer length
  5012.  1Eh    BYTE    auxiliary address
  5013.  1Fh    BYTE    spare
  5014.  20h  4 WORDs    spares
  5015. --------V-148100-----------------------------
  5016. INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
  5017.     AX = 8100h
  5018.     ES:DI -> buffer for VFOSSIL information (see #0272)
  5019. Return: AX = 1954h if installed
  5020. SeeAlso: AH=7Eh,AX=8101h
  5021.  
  5022. Format of VFOSSIL information:
  5023. Offset    Size    Description    (Table 0272)
  5024.  00h    WORD    size of information in bytes, including this field
  5025.  02h    WORD    VFOSSIL major version
  5026.  04h    WORD    VFOSSIL revision level
  5027.  06h    WORD    highest VFOSSIL application function supported
  5028. --------V-148101-----------------------------
  5029. INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
  5030.     AX = 8101h
  5031.     ES:DI -> buffer for application function table (see #0273)
  5032.     CX = length of buffer in bytes
  5033. Return: AX = 1954h if installed
  5034.         BH = highest VFOSSIL application function supported
  5035. Note:    the number of initialized pointers in the application function table
  5036.       will never exceed CX/4; if the buffer is large enough, BH+1 pointers
  5037.       will be initialized
  5038. SeeAlso: AX=8102h
  5039.  
  5040. Format of VFOSSIL application function table:
  5041. Offset    Size    Description    (Table 0273)
  5042.  00h    DWORD    -> function to query current video mode (VioGetMode)(see #0278)
  5043.  04h    DWORD    -> function to set video mode (VioSetMode) (see #0279)
  5044.  08h    DWORD    -> function to query hardware config (VioGetConfig) (see #0280)
  5045.  0Ch    DWORD    -> function to write data in TTY mode (VioWrtTTY) (see #0281)
  5046.  10h    DWORD    -> function to get current ANSI state (VioGetANSI) (see #0282)
  5047.  14h    DWORD    -> function to set new ANSI state (VioSetANSI) (see #0283)
  5048.  18h    DWORD    -> function to get curr cursor position (VioGetCurPos)
  5049.           (see #0284)
  5050.  1Ch    DWORD    -> function to set cursor position (VioSetCurPos) (see #0285)
  5051.  20h    DWORD    -> function to get cursor shape (VioGetCurType) (see #0286)
  5052.  24h    DWORD    -> function to set cursor shape (VioSetCurType) (see #0287)
  5053.  28h    DWORD    -> function to scroll screen up (VioScrollUp) (see #0288)
  5054.  2Ch    DWORD    -> function to scroll screen down (VioScrollDn) (see #0289)
  5055.  30h    DWORD    -> function to read cell string from screen (VioReadCellStr)
  5056.           (see #0290)
  5057.  34h    DWORD    -> function to read char string from screen (VioReadCharStr)
  5058.           (see #0291)
  5059.  38h    DWORD    -> function to write a cell string (VioWrtCellStr)
  5060.           (see #0292)
  5061.  3Ch    DWORD    -> function to write char string, leaving attr (VioWrtCharStr)
  5062.           (see #0293)
  5063.  40h    DWORD    -> function to write char string,const attr (VioWrtCharStrAttr)
  5064.           (see #0294)
  5065.  44h    DWORD    -> function to replicate an attribute (VioWrtNAttr)
  5066.           (see #0295)
  5067.  48h    DWORD    -> function to replicate a cell (VioWrtNCell)
  5068.           (see #0296)
  5069.  4Ch    DWORD    -> function to replicate a character (VioWrtNChar)
  5070.           (see #0297)
  5071.  
  5072. Format of VFOSSIL video mode data structure:
  5073. Offset    Size    Description    (Table 0274)
  5074.  00h    WORD    length of structure including this field
  5075.  02h    BYTE    mode characteristics
  5076.         bit 0: clear if MDA, set otherwise
  5077.         bit 1: graphics mode
  5078.         bit 2: color disabled (black-and-white)
  5079.  03h    BYTE    number of colors supported (1=2 colors, 4=16 colors, etc)
  5080.  04h    WORD    number of text columns
  5081.  06h    WORD    number of text rows
  5082.  08h    WORD    reserved
  5083.  0Ah    WORD    reserved
  5084.  0Ch    DWORD    reserved
  5085. SeeAlso: #0278,#0279
  5086.  
  5087. Format of VFOSSIL video configuration data:
  5088. Offset    Size    Description    (Table 0275)
  5089.  00h    WORD    structure length including this field
  5090.  02h    WORD    adapter type
  5091.         00h monochrome/printer
  5092.         01h CGA
  5093.         02h EGA
  5094.         03h VGA
  5095.         07h 8514/A
  5096.  04h    WORD    display type
  5097.         00h monochrome
  5098.         01h color
  5099.         02h enhanced color
  5100.         09h 8514
  5101.  06h    DWORD    adapter memory size
  5102. SeeAlso: #0280
  5103.  
  5104. Format of VFOSSIL cursor type record:
  5105. Offset    Size    Description    (Table 0276)
  5106.  00h    WORD    cursor start line
  5107.  02h    WORD    cursor end line
  5108.  04h    WORD    cursor width (always 01h)
  5109.  06h    WORD    cursor attribute (FFFFh = hidden)
  5110.  
  5111. (Table 0277)
  5112. Values for VFOSSIL error code:
  5113.  0000h    successful
  5114.  0074h    internal VIO failure
  5115.  0163h    unsupported mode
  5116.  0166h    invalid row value
  5117.  0167h    invalid column value
  5118.  017Eh    buffer too small
  5119.  01A5h    invalid VIO parameter
  5120.  01B4h    invalid VIO handle
  5121.  
  5122. (Table 0278)
  5123. Call VioGetMode with:
  5124.     STACK:    WORD    VIO handle (must be 00h)
  5125.         DWORD    pointer to video mode data structure (see #0274)
  5126. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0277)
  5127. SeeAlso: #0279
  5128.  
  5129. (Table 0279)
  5130. Call VioSetMode with:
  5131.     STACK:    WORD    VIO handle (must be 00h)
  5132.         DWORD    pointer to video mode data structure (see #0274)
  5133. Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see #0277)
  5134. SeeAlso: #0278
  5135.  
  5136. (Table 0280)
  5137. Call VioGetConfig with:
  5138.     STACK:    WORD    VIO handle (must be 00h)
  5139.         DWORD    pointer to video configuration data buffer (see #0275)
  5140. Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0277)
  5141.  
  5142. (Table 0281)
  5143. Call VioWrtTTY with:
  5144.     STACK:    WORD    VIO handle (must be 00h)
  5145.         WORD    length of string
  5146.         DWORD    pointer to character string to be written to screen
  5147. Return: AX = error code (00h, 74h, 1B4h) (see #0277)
  5148. Notes:    write wraps at end of line and terminates if it reaches end of screen
  5149.     in ANSI mode, ANSI control sequences are interpreted, and this func is
  5150.       not required to be reentrant; in non-ANSI mode, the function is
  5151.       reentrant and may be called from within an MS-DOS function call
  5152.  
  5153. (Table 0282)
  5154. Call VioGetANSI with:
  5155.     STACK:    WORD    VIO handle (must be 00h)
  5156.         DWORD    pointer to WORD which will be set to 00h if ANSI is off
  5157.             or 01h if ANSI is on
  5158. Return: AX = error code (00h, 74h, 1B4h) (see #0277)
  5159. SeeAlso: #0283
  5160.  
  5161. (Table 0283)
  5162. Call VioSetANSI with:
  5163.     STACK:    WORD    VIO handle (must be 00h)
  5164.         DWORD    pointer to WORD indicating new state of ANSI
  5165.             00h off, 01h on
  5166. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0277)
  5167. SeeAlso: #0282
  5168.  
  5169. (Table 0284)
  5170. Call VioGetCurPos with:
  5171.     STACK:    WORD    VIO handle (must be 00h)
  5172.         DWORD    pointer to WORD to hold current cursor column (0-based)
  5173.         DWORD    pointer to WORD to hold current cursor row (0-based)
  5174. Return: AX = error code (00h, 74h, 1B4h) (see #0277)
  5175. SeeAlso: #0285
  5176.  
  5177. (Table 0285)
  5178. Call VioSetCurPos with:
  5179.     STACK:    WORD    VIO handle (must be 00h)
  5180.         WORD    cursor column
  5181.         WORD    cursor row
  5182. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5183. Note:    if either coordinate is invalid, the cursor is not moved
  5184. SeeAlso: #0284
  5185.  
  5186. (Table 0286)
  5187. Call VioGetCurType with:
  5188.     STACK:    WORD    VIO handle (must be 00h)
  5189.         DWORD    pointer to cursor type record (see #0276)
  5190. Return: AX = error code (00h, 74h, 1B4h) (see #0277)
  5191. SeeAlso: #0287
  5192.  
  5193. (Table 0287)
  5194. Call VioSetCurType with:
  5195.     STACK:    WORD    VIO handle (must be 00h)
  5196.         DWORD    pointer to cursor type record (see #0276)
  5197. Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0277)
  5198. SeeAlso: #0288
  5199.  
  5200. (Table 0288)
  5201. Call VioScrollUp with:
  5202.     STACK:    WORD    VIO handle (must be 00h)
  5203.         DWORD    pointer to char/attr cell for filling emptied rows
  5204.         WORD    number or rows to scroll (FFFFh = clear area)
  5205.         WORD    right column of scroll area
  5206.         WORD    bottom row of scroll area
  5207.         WORD    left column of scroll area
  5208.         WORD    top row of scroll area
  5209. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5210. SeeAlso: #0289,INT 10/AH=06h
  5211.  
  5212. (Table 0289)
  5213. Call VioScrollDn with:
  5214.     STACK:    WORD    VIO handle (must be 00h)
  5215.         DWORD    pointer to char/attr cell for filling emptied rows
  5216.         WORD    number or rows to scroll (FFFFh = clear area)
  5217.         WORD    right column of scroll area
  5218.         WORD    bottom row of scroll area
  5219.         WORD    left column of scroll area
  5220.         WORD    top row of scroll area
  5221. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5222. SeeAlso: #0288,INT 10/AH=07h
  5223.  
  5224. (Table 0290)
  5225. Call VioReadCellStr with:
  5226.     STACK:    WORD    VIO handle (must be 00h)
  5227.         WORD    column at which to start reading
  5228.         WORD    row at which to start reading
  5229.         DWORD    pointer to WORD containing length of buffer in bytes
  5230.             on return, WORD contains number of bytes actually read
  5231.         DWORD    pointer to buffer for cell string
  5232. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0277)
  5233.  
  5234. (Table 0291)
  5235. Call VioReadCharStr with:
  5236.     STACK:    WORD    VIO handle (must be 00h)
  5237.         WORD    column at which to start reading
  5238.         WORD    row at which to start reading
  5239.         DWORD    pointer to WORD containing length of buffer in bytes
  5240.             on return, WORD contains number of bytes actually read
  5241.         DWORD    pointer to buffer for character string
  5242. Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0277)
  5243.  
  5244. (Table 0292)
  5245. Call VioWrtCellStr with:
  5246.     STACK:    WORD    VIO handle (must be 00h)
  5247.         WORD    column at which to start writing
  5248.         WORD    row at which to start writing
  5249.         WORD    length of cell string in bytes
  5250.         DWORD    pointer to cell string to write
  5251. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5252. Note:    write wraps at end of line and terminates if it reaches end of screen
  5253.  
  5254. (Table 0293)
  5255. Call VioWrtCharStr with:
  5256.     STACK:    WORD    VIO handle (must be 00h)
  5257.         WORD    column at which to start writing
  5258.         WORD    row at which to start writing
  5259.         WORD    length of character string
  5260.         DWORD    pointer to character string to write
  5261. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5262. Note:    write wraps at end of line and terminates if it reaches end of screen
  5263.  
  5264. (Table 0294)
  5265. Call VioWrtCharStrAttr with:
  5266.     STACK:    WORD    VIO handle (must be 00h)
  5267.         DWORD    pointer to attribute to be applied to each character
  5268.         WORD    column at which to start writing
  5269.         WORD    row at which to start writing
  5270.         WORD    length of character string
  5271.         DWORD    pointer to character string to write
  5272. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5273. Note:    write wraps at end of line and terminates if it reaches end of screen
  5274.  
  5275. (Table 0295)
  5276. Call VioWrtNAttr with:
  5277.     STACK:    WORD    VIO handle (must be 00h)
  5278.         WORD    column at which to start writing
  5279.         WORD    row at which to start writing
  5280.         WORD    number of times to write attribute
  5281.         DWORD    pointer to display attribute to replicate
  5282. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5283. Note:    write wraps at end of line and terminates if it reaches end of screen
  5284.  
  5285. (Table 0296)
  5286. Call VioWrtNCell with:
  5287.     STACK:    WORD    VIO handle (must be 00h)
  5288.         WORD    column at which to start writing
  5289.         WORD    row at which to start writing
  5290.         WORD    number of times to write cell
  5291.         DWORD    pointer to cell to replicate
  5292. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5293. Note:    write wraps at end of line and terminates if it reaches end of screen
  5294.  
  5295. (Table 0297)
  5296. Call VioWrtNChar with:
  5297.     STACK:    WORD    VIO handle (must be 00h)
  5298.         WORD    column at which to start writing
  5299.         WORD    row at which to start writing
  5300.         WORD    number of times to write character
  5301.         DWORD    pointer to character to replicate
  5302. Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0277)
  5303. Note:    write wraps at end of line and terminates if it reaches end of screen
  5304. --------V-148102-----------------------------
  5305. INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
  5306.     AX = 8102h
  5307. Return: AX = 1954h
  5308. Note:    terminates all operations; after this call, the video FOSSIL may either
  5309.       be removed from memory or reinitialized
  5310. SeeAlso: AX=8101h,AX=8103h
  5311. --------V-148103-----------------------------
  5312. INT 14 - VIDEO FOSSIL - UNINSTALL
  5313.     AX = 8103h
  5314. Return: AX = 1954h
  5315. Note:    this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
  5316. --------K-1482-------------------------------
  5317. INT 14 - KEYBOARD FOSSIL
  5318.     AH = 82h
  5319. SeeAlso: AH=7Eh
  5320. --------S-1482-------------------------------
  5321. INT 14 - COURIERS.COM - CONFIGURE PORT
  5322.     AH = 82h
  5323.     AL = port number (1-4)
  5324.     BX = speed (bps)
  5325.     CX = bit flags
  5326.         bit 0: enable input flow control
  5327.         bit 1: enable output flow control
  5328.         bit 2: use X.PC protocol (not yet implemented)
  5329. Return: nothing
  5330. SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
  5331. --------S-1482-------------------------------
  5332. INT 14 - COMM-DRV v14.0 - PORT CLEANUP
  5333.     AH = 82h
  5334.     DX = port number
  5335. Return: AH bit 7 set on error
  5336.     AH bit 7 clear if successful
  5337. Desc:    reset the port to its state before the AH=81h initialization and unhook
  5338.       any interrupts used by the port
  5339. SeeAlso: AH=81h"COMM-DRV",AH=83h"COMM-DRV"
  5340. ----------1483-------------------------------
  5341. INT 14 - SYSTEM FOSSIL
  5342.     AH = 83h
  5343. SeeAlso: AH=7Eh
  5344. --------S-1483-------------------------------
  5345. INT 14 - COURIERS.COM - START INPUT
  5346.     AH = 83h
  5347.     ES:BX -> circular input buffer
  5348.     CX = length of buffer
  5349.         (should be at least 128 bytes if input flow control enabled)
  5350. Return: nothing
  5351. SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
  5352. --------S-1483-------------------------------
  5353. INT 14 - COMM-DRV v14.0 - FLUSH COMMUNICATION BUFFERS
  5354.     AH = 83h
  5355.     DX = port number
  5356.     AL = subfunction
  5357.         00h flush input buffer
  5358.         01h flush output buffer
  5359.         02h flush both buffers
  5360. Return: AH bit 7 set on error
  5361.     AH bit 7 clear if successful
  5362. SeeAlso: AH=81h"COMM-DRV",AH=84h"COMM-DRV"
  5363. --------S-1484-------------------------------
  5364. INT 14 - COURIERS.COM - READ CHARACTER
  5365.     AH = 84h
  5366. Return: ZF set if no characters available
  5367.     ZF clear
  5368.        AL = character
  5369.        AH = modem status bits
  5370.         bit 7: set on input buffer overflow
  5371. SeeAlso: AH=02h,AH=86h,AH=89h
  5372. --------S-1484-------------------------------
  5373. INT 14 - COMM-DRV v14.0 - SEND PACKET
  5374.     AH = 84h
  5375.     CX = packet length in bytes
  5376.     DX = port number
  5377.     ES:DI -> packet to be sent
  5378. Return: AH = line status (see #0208)
  5379.         bit 7 set on error
  5380.     AL destroyed
  5381. SeeAlso: AH=83h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  5382. --------S-1485-------------------------------
  5383. INT 14 - COURIERS.COM - FLUSH PENDING INPUT
  5384.     AH = 85h
  5385. Return: nothing
  5386. SeeAlso: AH=0Ah,AH=88h"COURIERS"
  5387. --------S-1485-------------------------------
  5388. INT 14 - COMM-DRV v14.0 - RECEIVE PACKET
  5389.     AH = 85h
  5390.     CX = length of packet in bytes
  5391.     DX = port number
  5392.     ES:DI -> buffer for packet
  5393. Return: AH = line status (see #0208)
  5394.         bit 7 set on error
  5395.     AL destroyed
  5396. Note:    this call requires that at least the requested number of bytes are
  5397.       already present in the input buffer, and will fail if there are
  5398.       fewer bytes available
  5399. SeeAlso: AH=84h"COMM-DRV",AH=86h"COMM-DRV",AH=8Eh"COMM-DRV"
  5400. --------S-1486-------------------------------
  5401. INT 14 - COURIERS.COM - START OUTPUT
  5402.     AH = 86h
  5403.     ES:BX -> output buffer
  5404.     CX = length of output buffer
  5405. Return: nothing
  5406. SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
  5407. --------S-1486-------------------------------
  5408. INT 14 - COMM-DRV v14.0 - SET INPUT/OUTPUT TIMEOUTS
  5409.     AH = 86h
  5410.     BL = maximum clock ticks to wait before signalling error on input func
  5411.     BH = maximum clock ticks to wait before signalling error on output
  5412.     DX = port number
  5413.     SI = input timeout in clock ticks if BL=FFh and BH=FFh
  5414.     DI = output timeout in clock ticks if BL=FFh and BH=FFh
  5415. Return: AH bit 7 set on error
  5416.     AH bit 7 clear if successful
  5417. Note:    functions 02h, 85h, and 8Eh will wait for the input timeout before
  5418.       returning an error when no data is available; functions 01h and 84h
  5419.       will wait for the output timeout before returning an error if there
  5420.       is no space to output the data
  5421. SeeAlso: AH=01h,AH=02h,AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=8Eh"COMM-DRV"
  5422. --------S-1487-------------------------------
  5423. INT 14 - COURIERS.COM - OUTPUT STATUS
  5424.     AH = 87h
  5425. Return: AX = number of unsent characters
  5426. SeeAlso: AH=88h"COURIERS"
  5427. --------S-1487-------------------------------
  5428. INT 14 - COMM-DRV v14.0 - TURN ON DTR
  5429.     AH = 87h
  5430.     DX = port number
  5431. Return: AH bit 7 set on error
  5432.     AH bit 7 clear if successful
  5433. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  5434. --------S-1488-------------------------------
  5435. INT 14 - COURIERS.COM - ABORT OUTPUT
  5436.     AH = 88h
  5437. SeeAlso: AH=09h,AH=85h"COURIERS"
  5438. --------S-1488-------------------------------
  5439. INT 14 - COMM-DRV v14.0 - TURN OFF DTR
  5440.     AH = 88h
  5441.     DX = port number
  5442. Return: AH bit 7 set on error
  5443.     AH bit 7 clear if successful
  5444. Program: COMM-DRV is a universal serial communications driver by Willies'
  5445.       Computer Software Company, which supports standard INT 14 and
  5446.       FOSSIL calls as well as its own interfaces
  5447. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  5448. --------S-1489-------------------------------
  5449. INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
  5450.     AH = 89h
  5451.     CL = character to send
  5452. Return: nothing
  5453. SeeAlso: AH=01h,AH=84h"COURIERS"
  5454. --------S-1489-------------------------------
  5455. INT 14 - COMM-DRV v14.0 - TURN ON RTS
  5456.     AH = 89h
  5457.     DX = port number
  5458. Return: AH bit 7 set on error
  5459.     AH bit 7 clear if successful
  5460. SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
  5461. --------S-148A-------------------------------
  5462. INT 14 - COURIERS.COM - SEND BREAK
  5463.     AH = 8Ah
  5464. Return: nothing
  5465. SeeAlso: AH=89h"COURIERS",AH=FAh
  5466. --------S-148A-------------------------------
  5467. INT 14 - COMM-DRV v14.0 - TURN OFF RTS
  5468.     AH = 8Ah
  5469.     DX = port number
  5470. Return: AH bit 7 set on error
  5471.     AH bit 7 clear if successful
  5472. SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
  5473. --------S-148B-------------------------------
  5474. INT 14 - COMM-DRV v14.0 - SET USER INTERRUPT ROUTINE
  5475.     AH = 8Bh
  5476.     CX = bitmask of interrupt to process
  5477.         00h = deinstall
  5478.     BX:DI -> DWORD containing address of function to be called
  5479. Return: AH bit 7 clear if successful
  5480.     AH bit 7 set on error
  5481. --------S-148C-------------------------------
  5482. INT 14 - COURIERS.COM - SET SPEED
  5483.     AH = 8Ch
  5484.     BX = speed in bps
  5485. Return: nothing
  5486. SeeAlso: AH=00h,AH=82h"COURIERS"
  5487. --------S-148C-------------------------------
  5488. INT 14 - COMM-DRV v14.0 - READ UART REGISTER
  5489.     AH = 8Ch
  5490.     AL = register offset
  5491.     DX = port number
  5492. Return: AH bit 7 set on error
  5493.     AH bit 7 clear if successful
  5494.         AL = contents of UART register
  5495. SeeAlso: AH=8Dh"COMM-DRV"
  5496. --------S-148D-------------------------------
  5497. INT 14 - COURIERS.COM - DECONFIGURE PORT
  5498.     AH = 8Dh
  5499. Return: nothing
  5500. SeeAlso: AH=82h"COURIERS"
  5501. --------S-148D-------------------------------
  5502. INT 14 - COMM-DRV v14.0 - WRITE UART REGISTER
  5503.     AH = 8Dh
  5504.     AL = register offset
  5505.     BL = new value for UART register
  5506.     DX = port number
  5507. Return: AH bit 7 set on error
  5508.     AH bit 7 clear if successful
  5509. SeeAlso: AH=8Ch"COMM-DRV"
  5510. --------S-148E-------------------------------
  5511. INT 14 - COMM-DRV v14.0 - READ PACKET NONDESTRUCTIVELY
  5512.     AH = 8Eh
  5513.     CX = length of packet in bytes
  5514.     DX = port number
  5515.     ES:DI -> buffer for packet
  5516. Return: AH = line status (see #0208)
  5517.         bit 7 set on error (see AX=8000h"COMM-DRV")
  5518.     AL destroyed
  5519. Program: COMM-DRV is a universal serial communications driver by Willies'
  5520.       Computer Software Company, which supports standard INT 14 and
  5521.       FOSSIL calls as well as its own interfaces
  5522. Desc:    retrieve a packet from the input buffer without removing it from the
  5523.       buffer
  5524. Note:    this call requires that at least the requested number of bytes are
  5525.       already present in the input buffer, and will fail if there are
  5526.       fewer bytes available
  5527. SeeAlso: AX=8000h"COMM-DRV",AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
  5528. --------S-14A0-------------------------------
  5529. INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
  5530.     AH = A0h
  5531.     ES:BX -> ASCIZ internet host name
  5532.     CX = length of name
  5533. Return: AH = return code (00h,04h-06h,08h,0Ah-0Ch) (see #0298)
  5534.     CL = session ID
  5535. Program: the Bridge Application Program Interface is a set of functions which
  5536.       makes many of the details of LAN communications transparent
  5537. Note:    Novell TELAPI.EXE returns AH=09h (not supported) and CL=00h
  5538. SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AX=AF00h
  5539.  
  5540. (Table 0298)
  5541. Values for 3com BAPI return code:
  5542.  00h    successful
  5543.  01h    no characters written
  5544.  02h    no characters read
  5545.  03h    no such session
  5546.  04h    clearinghouse name not found
  5547.  05h    no response from host
  5548.  06h    no more sessions available
  5549.  07h    session aborted
  5550.  08h    invalid clearinghouse name
  5551.  09h    not supported
  5552.  0Ah    internal (general) network error
  5553.  0Bh    out of memory
  5554.  0Ch    invalid IP address
  5555. --------S-14A0--CXFFFF-----------------------
  5556. INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
  5557.     AH = A0h
  5558.     CX = FFFFh
  5559. Return: CF clear if successful
  5560.         AX = 5445h ('TE')
  5561.         CX <> FFFFh
  5562.         DX = port number
  5563.     CF set on error
  5564. Program: TES is a network serial port emulation program
  5565. SeeAlso: AH=A1h"TES"
  5566. --------S-14A1-------------------------------
  5567. INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
  5568.     AH = A1h
  5569.     DH = session ID (00h for external session managment)
  5570. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0298)
  5571.     AL destroyed (Novell TELAPI.EXE)
  5572. SeeAlso: AH=A0h"BAPI"
  5573. --------S-14A1-------------------------------
  5574. INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
  5575.     AH = A1h
  5576. Return: CX = number of active sessions
  5577.     ES:SI -> status array (see #0299)
  5578. SeeAlso: AH=A2h"TES",AH=A3h"TES"
  5579.  
  5580. Format of Interconnections TES status array entry:
  5581. Offset    Size    Description    (Table 0299)
  5582.  00h    BYTE    status
  5583.  01h    WORD    offset of name
  5584. --------S-14A2-------------------------------
  5585. INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER
  5586.     AH = A2h
  5587.     AL = character
  5588.     DH = session ID (00h for external session managment)
  5589. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0298)
  5590. SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  5591. --------S-14A2-------------------------------
  5592. INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
  5593.     AH = A2h
  5594. Return: CX = number of servers
  5595.     ES:SI -> array of offsets from ES for server names
  5596. SeeAlso: AH=A1h"TES"
  5597. --------S-14A3-------------------------------
  5598. INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER
  5599.     AH = A3h
  5600.     DH = session ID (00h for external session managment)
  5601. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0298)
  5602.     AL = character read or 00h if none available
  5603. SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AH=A7h"BAPI"
  5604. --------S-14A3-------------------------------
  5605. INT 14 - Interconnections Inc. TES - START A NEW SESSION
  5606.     AH = A3h
  5607.     ES:SI -> ???
  5608. Return: CF clear if successful
  5609.         AX = 5445h ('TE')
  5610.         CX <> FFFFh
  5611.         DX = port number
  5612.     CF set on error
  5613. SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
  5614. --------S-14A4-------------------------------
  5615. INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
  5616.     AH = A4h
  5617.     CX = length of buffer in bytes
  5618.     DH = session ID (00h for external session managment)
  5619.     ES:BX -> buffer containing data
  5620. Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0298)
  5621.     CX = number of bytes actually sent
  5622. SeeAlso: AH=19h,AH=86h,AH=A0h"BAPI",AH=A5h"BAPI"
  5623. --------S-14A4-------------------------------
  5624. INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
  5625.     AH = A4h
  5626.     ???
  5627. Return: ???
  5628. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  5629. --------S-14A5-------------------------------
  5630. INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
  5631.     AH = A5h
  5632.     CX = length of buffer
  5633.     DH = session ID (00h for external session managment)
  5634.     ES:BX -> buffer for data
  5635. Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0298)
  5636.     CX = number of bytes actually read
  5637. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
  5638. SeeAlso: AH=A7h"BAPI",AX=FF02h
  5639. --------S-14A5-------------------------------
  5640. INT 14 - Interconnections Inc. TES - RESUME A SESSION
  5641.     AH = A5h
  5642.     AL = session number
  5643. Return: ???
  5644. SeeAlso: AH=A4h"TES",AH=A6h"TES"
  5645. --------S-14A6-------------------------------
  5646. INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
  5647.     AH = A6h
  5648.     DH = session ID (00h for external session managment)
  5649. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0298)
  5650. Desc:    generate a short break signal; if data delivery was turned off by the
  5651.       break, wait for the host to turn it on again
  5652. SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI"
  5653. --------S-14A6-------------------------------
  5654. INT 14 - Interconnections Inc. TES - DROP A SESSION
  5655.     AH = A6h
  5656.     AL = session number
  5657. Return: AH = status
  5658.         00h successful
  5659.         else error
  5660. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  5661. --------S-14A7-------------------------------
  5662. INT 14 - 3com BAPI SERIAL I/O - READ STATUS
  5663.     AH = A7h
  5664.     DH = session ID (00h for external session managment)
  5665. Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0298)
  5666.     CX = number of bytes available for reading
  5667. Note:    Novell TELAPI.EXE v4.01 always returns either 0 or 1 bytes available
  5668. SeeAlso: AH=A5h"BAPI"
  5669. --------S-14A7-------------------------------
  5670. INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
  5671.     AH = A7h
  5672.     ???
  5673. Return: ???
  5674. SeeAlso: AH=A3h"TES",AH=A5h"TES"
  5675. --------S-14A8-------------------------------
  5676. INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
  5677.     AH = A8h
  5678.     AL = 00h no visible response
  5679.     ES:SI -> ASCIZ command
  5680. Return: ???
  5681. --------N-14A8-------------------------------
  5682. INT 14 - Novell TelAPI v4.01 - CONNECTION INFORMATION???
  5683.     AH = A8h
  5684.     DH = session ID???
  5685.     CH = subfunction
  5686.         02h ???
  5687.         0Dh ???
  5688.         0Fh ???
  5689.         10h ???
  5690.         11h ???
  5691.         28h ???
  5692.         else
  5693.         Return: AH = 09h (not supported)
  5694. Return: AH = return code (see #0298)
  5695.         00h successful
  5696.         CL = ??? (0/1/8) (subfunctions 02h,0Dh,0Fh,10h)
  5697.         CL = ??? (7Fh/FFh) (subfunction 28h)
  5698.         CX = ??? (subfunction 11h)
  5699. SeeAlso: AH=A9h"TelAPI"
  5700. --------N-14A9-------------------------------
  5701. INT 14 - Novell TelAPI v4.01 - CONNECTION CONTROL???
  5702.     AH = A9h
  5703.     DH = session ID???
  5704.     CH = subfunction
  5705.         02h ???
  5706.         0Dh ???
  5707.         0Fh ???
  5708.         10h ???
  5709.         11h ???
  5710.         28h ???
  5711.         else
  5712.         Return: AH = 09h (not supported)
  5713.     ???
  5714. Return: AH = return code (see #0298)
  5715.     ???
  5716. SeeAlso: AH=A8h"TelAPI",AH=E4h,INT 6B/AX=0600h
  5717. --------V-14AA01-----------------------------
  5718. INT 14 - DimVGA v2.0+ - INSTALLATION CHECK
  5719.     AX = AA01h
  5720. Return: AX = FFFFh if installed, unchanged
  5721.     BX = version (v1.5+ only), BH = major, BL = minor (v1.5 = 0105h)
  5722.     CX = resident segment (v3.1+)
  5723. Program: DimVGA is a public domain screen saver by Menno Pieters
  5724. SeeAlso: AX=AA02h,AX=AA03h,AX=AA06h,INT 11/AX=0225h/BX=6900h,INT 12"KEYBUI"
  5725. SeeAlso: INT 2D/AL=10h"Burnout Plus",INT 2F/AX=6400h,INT 2F/AH=93h
  5726. SeeAlso: INT 2F/AX=C000h"VGAsave",INT 2F/AX=C000h"AD-DOS",INT 2F/AX=C050h
  5727. SeeAlso: INT 2F/AX=E300h
  5728. Index:    screen saver;DimVGA
  5729. --------V-14AA02-----------------------------
  5730. INT 14 - DimVGA v2.0+ - SET TIME-OUT (DIMMING/BLANKING) PERIOD
  5731.     AX = AA02h
  5732.     BX = number of clock ticks
  5733. Return: AX = FFFFh
  5734. Note:    on screen modes with 256 or less colors DimVGA will dim the screen,
  5735.       when more than 256 colors can be used DimVGA will blank the screen.
  5736. SeeAlso: AX=AA01h,AX=AA03h,AX=AA04h,AX=AA06h
  5737. Index:    screen saver;DimVGA
  5738. --------V-14AA03-----------------------------
  5739. INT 14 - DimVGA v2.0+ - SET DIMMING FACTOR
  5740.     AX = AA03h
  5741.     BX = percentage remaining visible (1-99)
  5742. Return: AX = FFFFh
  5743. SeeAlso: AX=AA02h,AX=AA05h,AX=AA06h
  5744. Index:    screen saver;DimVGA
  5745. --------V-14AA04-----------------------------
  5746. INT 14 - DimVGA v2.0+ - GET TIME-OUT PERIOD
  5747.     AX = AA04h
  5748. Return: AX = FFFFh
  5749.     BX = current time-out in clock ticks
  5750. SeeAlso: AX=AA02h,AX=AA05h,AX=AA0Ah
  5751. Index:    screen saver;DimVGA
  5752. --------V-14AA05-----------------------------
  5753. INT 14 - DimVGA v2.0+ - GET DIMMING FACTOR
  5754.     AX = AA05h
  5755. Return: AX = FFFFh
  5756.     BX = current dimming factor
  5757. SeeAlso: AX=AA03h,AX=AA04h,AX=AA0Ah
  5758. Index:    screen saver;DimVGA
  5759. --------V-14AA06-----------------------------
  5760. INT 14 - DimVGA v2.0+ - DISABLE
  5761.     AX = AA06h
  5762. Return: AX = FFFFh
  5763. SeeAlso: AX=AA01h,AX=AA07h,AX=AA0Ah
  5764. Index:    screen saver;DimVGA
  5765. --------V-14AA07-----------------------------
  5766. INT 14 - DimVGA v2.0+ - ENABLE
  5767.     AX = AA07h
  5768. Return: AX = FFFFh
  5769. SeeAlso: AX=AA01h,AX=AA06h,AX=AA0Ah
  5770. Index:    screen saver;DimVGA
  5771. --------V-14AA08-----------------------------
  5772. INT 14 - DimVGA v2.0+ - DIM SCREEN 'MANUALLY'
  5773.     AX = AA08h
  5774. Return: AX = FFFFh
  5775. Note:    this function will dim the screen immediately, even if DimVGA is
  5776.       currently disabled
  5777. SeeAlso: AX=AA01h,AX=AA02h,AX=AA09h
  5778. Index:    screen saver;DimVGA
  5779. --------V-14AA09-----------------------------
  5780. INT 14 - DimVGA v2.0+ - UNDIM SCREEN 'MANUALLY'
  5781.     AX = AA09h
  5782. Return: AX = FFFFh
  5783. Note:    this function will undim the screen immediately, even if DimVGA is
  5784.       currently disabled
  5785. SeeAlso: AX=AA01h,AX=AA08h
  5786. Index:    screen saver;DimVGA
  5787. --------V-14AA0A-----------------------------
  5788. INT 14 - DimVGA v2.0+ - CHECK WHETHER ENABLED
  5789.     AX = AA0Ah
  5790. Return: AX = FFFFh
  5791.     BX = current state (0000h disabled, 0001h enabled)
  5792. SeeAlso: AX=AA01h,AX=AA06h,AX=AA07h
  5793. Index:    screen saver;DimVGA
  5794. --------V-14AA0B-----------------------------
  5795. INT 14 - DimVGA v2.1+ - SET HOTKEY
  5796.     AX = AA0Bh
  5797.     BH = shift state (see #0300)
  5798.     BL = keyboard scancode
  5799. Return: AX = FFFFh
  5800. SeeAlso: AX=AA01h,AX=AA0Ch
  5801. Index:    screen saver;DimVGA
  5802.  
  5803. Bitfields for DimVGA hotkey shift state:
  5804. Bit(s)    Description    (Table 0300)
  5805.  7-4    unused
  5806.  3    Alt key pressed
  5807.  2    Ctrl key pressed
  5808.  1    Left shift key pressed
  5809.  0    Right shift key pressed
  5810. --------V-14AA0C-----------------------------
  5811. INT 14 - DimVGA v2.1+ - GET HOTKEY
  5812.     AX = AA0Ch
  5813. Return: AX = FFFFh
  5814.     BH = shift state (see #0300)
  5815.     BL = keyboard scancode
  5816. SeeAlso: AX=AA01h,AX=AA0Bh
  5817. Index:    screen saver;DimVGA
  5818. --------V-14AA0D-----------------------------
  5819. INT 14 - DimVGA v3.0+ - SET MOUSE CHECK STATUS
  5820.     AX = AA0Dh
  5821.     BX = new mouse check status
  5822.         0000h mouse checking off
  5823.         0001h mouse checking on
  5824. Return: AX = FFFFh
  5825. Note:    before switching mouse checking on, a mouse driver should be
  5826.       found in memory. If no mouse driver is found, mouse checking
  5827.       should be switched off (resident DimVGA does not check by itself).
  5828. SeeAlso: AX=AA01h,AX=AA0Eh
  5829. Index:    screen saver;DimVGA
  5830. --------V-14AA0E-----------------------------
  5831. INT 14 - DimVGA v3.0+ - GET MOUSE CHECK STATUS
  5832.     AX = AA0Eh
  5833. Return: BX = mouse check status (0000h disabled, 0001h enabled)
  5834. SeeAlso: AX=AA01h,AX=AA0Dh
  5835. Index:    screen saver;DimVGA
  5836. --------V-14AA0F-----------------------------
  5837. INT 14 - DimVGA v3.4 - SET LOCKING STATUS
  5838.     AX = AA0Fh
  5839.     BX = locking status
  5840.         0000h disabled
  5841.         0001h enabled
  5842. Return: AX = FFFFh
  5843. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA10h
  5844. Index:    screen saver;DimVGA
  5845. --------V-14AA10-----------------------------
  5846. INT 14 - DimVGA v3.4 - GET MOUSE CHECK STATUS
  5847.     AX = AA10h
  5848. Return: BX = locking status (0000h disabled, 0001h enabled)
  5849. SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA0Fh
  5850. Index:    screen saver;DimVGA
  5851. --------S-14AF00BXAAAA-----------------------
  5852. INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
  5853.     AX = AF00h
  5854.     BX = AAAAh
  5855. Return: AX = AF01h if installed
  5856.         BH = protocol type (if BX=AAAAh on entry)
  5857.         01h NetManage TCP/IP
  5858.         BL = version for protocol type (if BX=AAAAh on entry)
  5859. Note:    early versions of the BAPI and the ROM BIOS simply destroy AX; this
  5860.       behavior is used to determine whether the newer functions (AH=B0h,
  5861.       AH=B1h,etc) are available
  5862. SeeAlso: AH=A0h"BAPI"
  5863. --------S-14B0-------------------------------
  5864. INT 14 - 3com BAPI SERIAL I/O - EN/DISABLE "ENTER COMMAND MODE" (ECM) CHARACTER
  5865.     AH = B0h
  5866.     AL = new state (00h disabled, 01h enabled)
  5867. Return: AH = return code (00h,07h,0Ah) (see #0298)
  5868. Note:    disabling the ECM character allows applications to send data which
  5869.       includes the ECM character
  5870. SeeAlso: AX=AF00h"BAPI",AH=B1h,AH=B2h
  5871. --------S-14B1-------------------------------
  5872. INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
  5873.     AH = B1h
  5874. Return: AH = return code (00h,07h,0Ah) (see #0298)
  5875. Desc:    provide a means for the application or terminal emulator to perform
  5876.       the same action normally caused by the ECM character
  5877. SeeAlso: AH=B0h,AH=B2h
  5878. --------S-14B2-------------------------------
  5879. INT 14 - 3com BAPI SERIAL I/O - GET ECM WATCH STATE
  5880.     AH = B2h
  5881. Return: AH = return code (00h,07h,0Ah) (see #0298)
  5882.     AL = watch flag (00h disabled, 01h enabled)
  5883. Desc:    determine whether the ECM character is enabled
  5884. SeeAlso: AH=B0h,AH=B1h
  5885. --------S-14B3-------------------------------
  5886. INT 14 - 3com BAPI SERIAL I/O - GET/SET CONFIGURATION INFO
  5887.     AH = B3h
  5888.     AL = direction (00h get, 01h set)
  5889.     DH = session ID (00h for external session managment)
  5890.     DL = configuration item (00h = end-of-line mapping)
  5891.     CX = new configuration item value (if AL=01h)
  5892.         ---if DL=00h---
  5893.         CH = application EOL type (app to Telnet client)
  5894.         01h application will send lone CR
  5895.         02h application will send CR-? pair
  5896.         CL = driver EOL type (Telnet client to Telnet server)
  5897.         01h driver should send CR-NUL pair
  5898.         02h driver should send CR-LF pair
  5899. Return: AH = return code (00h,03h,09h-0Bh) (see #0298)
  5900.     ---if AL=00h---
  5901.     CX = configuration item value (above)
  5902. SeeAlso: AH=B2h
  5903. --------N-14E0-------------------------------
  5904. INT 14 - TelAPI - "telopen" - CREATE TELNET CONNECTION (BLOCKING)
  5905.     AH = E0h
  5906.     BX = port number to connect with (default 0017h used if <= 0)
  5907.     CX:DX = Internet address of remote host
  5908.     DS:DI -> 2-byte remote host (session) identifier
  5909.     ES:SI -> 1700-byte buffer for Telnet state record
  5910.         0000h:0000h to use TelAPI internally-allocated space
  5911. Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #0301)
  5912.     ES:SI buffer filled with state record
  5913.     ES:SI -> internally-allocated state record in some versions
  5914. Note:    the remote host identifier may be used to refer to this connection
  5915. SeeAlso: AH=E1h,AH=ECh,AX=FF00h
  5916.  
  5917. (Table 0301)
  5918. Values for TelAPI status:
  5919.  0000h-7FFFh    successful (session number)
  5920.  FED3h    (-301)    no session allocated, or out of TelAPI data space
  5921.  FF37h    (-201)    all sessions in use
  5922.  FFBDh    (-67)    unknown hostname
  5923.  FFC0h    (-64)    host not functioning
  5924.  FFC3h    (-61)    connection attempt refused
  5925.  FFC4h    (-60)    connection attempt timed out
  5926.  FFC8h    (-56)    socket already connected
  5927.  FFCDh    (-51)    network is unreachable
  5928.  FFDDh    (-35)    operation would block
  5929. --------S-14E000-----------------------------
  5930. INT 14 - MX5 Extended FOSSIL - GET MNP STATUS BLOCK
  5931.     AX = E000h
  5932.     DX = port number (0-3)
  5933. Return: ES:BX -> status block (see #0302)
  5934. Program: MX5 is a FOSSIL driver by MagicSoft which emulates MNP Level 5, and
  5935.       ships with the MTEZ terminal program as MTEMNP.DRV (a TSR despite
  5936.       the .DRV extension)
  5937. SeeAlso: AX=E006h
  5938.  
  5939. Format of MX5 Extended FOSSIL status block:
  5940. Offset    Size    Description    (Table 0302)
  5941.  00h    BYTE    flag: active (00h no, 01h yes)
  5942.  01h    BYTE    MNP level (2,4,5)
  5943.  02h    BYTE    series ID from remote MNP
  5944.  03h    DWORD    total packets transmitted
  5945.  07h    DWORD    duplicate packets transmitted
  5946.  0Bh    DWORD    maximum speed
  5947.  0Fh    DWORD    total packets received
  5948.  13h    DWORD    duplicate packets received
  5949.  17h    DWORD    maximum speed
  5950. --------S-14E001-----------------------------
  5951. INT 14 - MX5 Extended FOSSIL - GET/SET MNP LEVEL
  5952.     AX = E001h
  5953.     BH = function
  5954.         00h get MNP level
  5955.         01h set MNP level
  5956.         BL = new level (00h none, 02h/04h/05h MNP level N)
  5957.     DX = port number (0-3)
  5958. Return: BL = MNP level
  5959. SeeAlso: AX=E002h,AX=E003h,AX=E004h,AX=E006h
  5960. --------S-14E002-----------------------------
  5961. INT 14 - MX5 Extended FOSSIL - GET/SET MNP ANSWER/ORIGINATE MODE
  5962.     AX = E002h
  5963.     BH = function
  5964.         00h get answer/originate mode
  5965.         01h set mode
  5966.         BL = new mode (00h originate [default], 01h answer)
  5967.     DX = port number (0-3)
  5968. Return: BL = answer/originate mode
  5969. SeeAlso: AX=E001h,AX=E003h,AX=E006h
  5970. --------S-14E003-----------------------------
  5971. INT 14 - MX5 Extended FOSSIL - GET/SET MNP WAIT TICKS
  5972.     AX = E003h
  5973.     BH = function
  5974.         00h get wait ticks
  5975.         01h set wait ticks
  5976.         BL = MNP wait ticks (default 0Eh)
  5977.     DX = port number (0-3)
  5978. Return: BL = wait ticks
  5979. SeeAlso: AX=E001h,AX=E002h,AX=E006h
  5980. --------S-14E004-----------------------------
  5981. INT 14 - MX5 Extended FOSSIL - GET/SET MNP CONNECT SOUND LEVEL
  5982.     AX = E004h
  5983.     BH = function
  5984.         00h get sound level
  5985.         01h set sound level
  5986.         BL = new sound level (00h off, 01h on [default])
  5987.     DX = port number
  5988. Return: BL = sound state
  5989. Desc:    specify whether MX5 should generate beeps after an MNP connection
  5990.       (three high beeps if successful, high then low on connection failure)
  5991. SeeAlso: AX=E002h,AX=E006h
  5992. --------S-14E005-----------------------------
  5993. INT 14 - MX5 Extended FOSSIL - UNINSTALL
  5994.     AX = E005h
  5995. Return: BX = segment of MX5's memory block or 0000h on failure
  5996. Note:    caller must free the returned memory block to complete the uninstall
  5997. SeeAlso: AX=E006h
  5998. --------S-14E006BX0000-----------------------
  5999. INT 14 - MX5 Extended FOSSIL - INSTALLATION CHECK
  6000.     AX = E006h
  6001.     BX = 0000h
  6002. Return: BX = 4D58h ('MX') if installed
  6003.         AH = major version
  6004.         AL = minor version
  6005. SeeAlso: AX=E000h,AX=E001h,AX=E005h,AX=E007h
  6006. --------S-14E007-----------------------------
  6007. INT 14 - MX5 Extended FOSSIL - WAIT SPECIFIED NUMBER OF TICKS
  6008.     AX = E007h
  6009.     CX = number of ticks to wait
  6010. Return: nothing
  6011. SeeAlso: AX=E006h
  6012. --------N-14E1-------------------------------
  6013. INT 14 - TelAPI - "telclose" - TERMINATE TELNET CONNECTION
  6014.     AH = E1h
  6015.     BX = connection ID
  6016. Return: AX = status (0000h,FFF7h,maybe others) (see #0301)
  6017. Note:    flushes and releases all buffers and data space used by the connection
  6018. SeeAlso: AH=E0h,AH=E6h,AX=FF00h
  6019. --------N-14E2-------------------------------
  6020. INT 14 - TelAPI - "telread" - BUFFERED READ
  6021.     AH = E2h
  6022.     BX = connection ID (see AH=E0h"TelAPI")
  6023.     CX = length of buffer in bytes
  6024.     ES:SI -> buffer for data
  6025. Return: AX > 0000h number of characters actually read
  6026.     AX = 0000h host has closed connection
  6027.     AX < 0000h error code (see #0301)
  6028. Note:    translates CRLF into local EOL if the connection is in ASCII mode,
  6029.       negotiates various Telnet options, and immediately executes several
  6030.       different Telnet action commands
  6031. SeeAlso: AH=07h"TelAPI",AH=E3h,AH=E6h,AX=FF00h,INT 6B/AH=01h
  6032. --------N-14E3-------------------------------
  6033. INT 14 - TelAPI - "telwrite" - BUFFERED WRITE
  6034.     AH = E3h
  6035.     BX = connection ID
  6036.     CX = length of buffer in bytes
  6037.     ES:SI -> buffer containing data
  6038. Return: AX > 0000h number of characters actually written
  6039.     AX < 0000h error code (see #0301)
  6040. Note:    translates local EOL into CRLF if the connection is in ASCII mode,
  6041.       sends the appropriate Telnet commands for the characters selected
  6042.       for IP, AYT, AO, EC, EL, and Break
  6043. SeeAlso: AH=06h"TelAPI",AH=E2h,AH=E6h,AX=FF00h,INT 6B/AH=00h
  6044. --------N-14E4-------------------------------
  6045. INT 14 - TelAPI - "telioctl" - CONNECTION CONTROL
  6046.     AH = E4h
  6047.     BX = connection ID (see AH=E0h"TelAPI")
  6048.     CX = Telnet command/option identifier (see #0304)
  6049.     ES:SI -> buffer containing command/option argument (see #0303)
  6050. Return: AX = status (0000h, etc.) (see #0301)
  6051. Desc:    start filter control, initiate Telnet option negotiation, or get filter
  6052.       control status
  6053. SeeAlso: AH=A9h,AH=E6h,AX=FF00h,INT 6B/AX=0600h
  6054.  
  6055. Format of TelAPI Telnet command/option argument:
  6056. Offset    Size    Description    (Table 0303)
  6057.  00h  5 WORD    numeric arguments
  6058.  0Ah    DWORD    -> ASCIZ string
  6059. SeeAlso: #0304
  6060.  
  6061. (Table 0304)
  6062. Values for TelAPI Telnet command/option identifier:
  6063.  01h    ASCII        args: none
  6064.  02h    BINARY        args: none
  6065.  03h    LOCALECHO    args: none        client echos data
  6066.  04h    REMOTEECHO    args: none        server echos data
  6067.  05h    SGA        args: none        Suppress Go-Ahead signal
  6068.  07h    CHARMODE    args: none        no line-buffering
  6069.  08h    LINEMODE    args: -> erase-line ch    perform line-buffering
  6070.  09h    RECVEOL        args: EOL type
  6071.  0Ah    SENDEOL        args: EOL type
  6072.  0Bh    EOR        args: none        enable end-of-record sequence
  6073.  0Dh    BREAK        args: -> break char
  6074.  0Eh    VERBOSE        args: verbosity        display Telnet negotiations?
  6075.  0Fh    AYT        args: -> AYT escape ch
  6076.  10h    AO        args: -> AO escape char
  6077.  11h    IP        args: -> IP escape char
  6078.  12h    EC        args: -> escape char
  6079.  13h    EL        args: -> escape char
  6080.  14h    STATUS        args: type; returns data in structure
  6081.  18h    TERMTYPE    args: -> terminal type
  6082.  19h    ATTACHPORT    args: port number ; returns session number
  6083.  1Bh    TRANSMIT_EOR    args: EOR enabled    append EOR to every telwrite?
  6084. SeeAlso: #0303
  6085. --------N-14E5-------------------------------
  6086. INT 14 - TelAPI - "telreset" - RESET ALL CONNECTIONS
  6087.     AH = E5h
  6088. Return: AX = status (0000h,other) (see also #0301)
  6089.         FFFFh unable to reset
  6090. Desc:    close all sessions and reset TelAPI to defaults
  6091. SeeAlso: AH=E1h,AH=E6h,AX=FF00h
  6092. --------N-14E6-------------------------------
  6093. INT 14 - TelAPI - "telunload" - UNINSTALL
  6094.     AH = E6h
  6095. Return: AX = status
  6096.         0000h successful
  6097.         FFFFh unable to uninstall
  6098. Notes:    TelAPI also supports the NASI/NACS and NCSI APIs on INT 6B
  6099.     this function invokes AH=E5h internally
  6100. SeeAlso: AH=E5h,AX=FF00h,INT 6B/AH=00h,INT 6B/AH=10h
  6101. --------N-14E7-------------------------------
  6102. INT 14 - TelAPI - "tellist" - GET TELNET SESSION LIST
  6103.     AH = E7h
  6104.     ES:SI -> 10-word buffer for session list
  6105. Return: AX = 0000h (successful)
  6106.     ES:SI buffer filled
  6107. Desc:    determine, for each of the ten allowable sessions, whether the session
  6108.       is currently available
  6109. Note:    each word in the buffer is filled with either 0000h to indicate that
  6110.      the corresponding sesion is unavailable, or 0001h if available
  6111. SeeAlso: AH=E0h,AH=E5h,AX=FF00h
  6112. --------N-14E8-------------------------------
  6113. INT 14 - TelAPI - "telattach" - ATTACH COM PORT TO/FROM TELNET SESSION
  6114.     AH = E8h
  6115.     BX = connection ID (see AH=E0h"TelAPI")
  6116.     CX = serial port number (0000h-0003h = COM1-COM4)
  6117. Return: AX = status
  6118.         0000h successful
  6119.         FFFFh failed
  6120. SeeAlso: AH=E0h,AH=E9h,AX=FF00h
  6121. --------N-14E9-------------------------------
  6122. INT 14 - TelAPI - "telportosn" - GET SESSION NUMBER FOR COM PORT
  6123.     AH = E9h
  6124.     DX = serial port number (0000h-0003h = COM1-COM4)
  6125. Return: AX >= 0000h session number
  6126.     AX < 0000h error code (see #0301)
  6127. SeeAlso: AH=E0h,AH=E8h,AH=EAh,AX=FF00h
  6128. --------N-14EA-------------------------------
  6129. INT 14 - TelAPI - "telstatus" - GET TELNET CONNECTION STATUS INFORMATION
  6130.     AH = EAh
  6131.     BX = connection ID (see AH=E0h"TelAPI")
  6132.     ES:SI -> buffer for status info (see #0305)
  6133. Return: AX = status (0000h,FFFFh,etc.)
  6134. SeeAlso: AH=E9h,AH=EBh,AX=FF00h
  6135.  
  6136. Format of TelAPI Telnet connection status information:
  6137. Offset    Size    Description    (Table 0305)
  6138.  00h  4 BYTEs    remote host IP address
  6139.  04h 20 BYTEs    reserved
  6140.  18h    WORD    local port number
  6141.  1Ah    BYTE    connection mode (00h = ASCII, 01h = Binary)
  6142.  1Bh    BYTE    echo flag (00h local, 01h remote)
  6143.  1Ch    BYTE    SGA flag (00h will, 01h won't)
  6144.  1Dh    BYTE    EOR negotation flag (00h do negotiate, 01h don't)
  6145.  1Eh    BYTE    buffering (00h line mode, 01h character mode)
  6146.  1Fh    BYTE    reserved
  6147.  20h    BYTE    verbose flag (00h no, 01h verbose mode)
  6148.  21h    BYTE    received EOL (00h no xlat, 01h CR, 02h LF, 03h CRLF)
  6149.  22h    BYTE    sent EOL (00h no translation, 01h CR, 02h LF)
  6150.  23h    BYTE    break character
  6151.  24h    BYTE    IP escape character
  6152.  25h    BYTE    AO escape character
  6153.  26h    BYTE    AYT escape character
  6154.  27h    BYTE    EC escape character
  6155.  28h    BYTE    EL escape character
  6156.  29h 41 BYTEs    ASCIZ Telnet-negotiated terminal type
  6157.  52h  9 BYTEs    session ID
  6158. SeeAlso: #0306
  6159. --------N-14EB-------------------------------
  6160. INT 14 - TelAPI - "telname" - GET AVAILABLE/INUSE STATUS FOR ALL SESSIONS
  6161.     AH = EBh
  6162.     ES:SI -> buffer for session statuses (see #0306)
  6163. Return: ES:SI buffer filled
  6164. SeeAlso: AH=E9h,AH=EAh,AX=FF00h
  6165.  
  6166. Format of TelAPI session status information [array]:
  6167. Offset    Size    Description    (Table 0306)
  6168.  00h    BYTE    session state (00h available, 01h connected)
  6169.  01h  9 BYTEs    session ID if connected
  6170.  0Ah    WORD    attached COM port if connected, FFFFh if not
  6171. SeeAlso: #0305
  6172. --------N-14EC-------------------------------
  6173. INT 14 - TelAPI - "telnblkopen" - CREATE TELNET CONNECTION (NON-BLOCKING)
  6174.     AH = ECh
  6175.     BX = port number to connect with (default 0017h used if <= 0)
  6176.     CX:DX = Internet address of remote host
  6177.     DS:DI -> 2-byte remote host (connection) identifier
  6178.     ES:SI -> 1700-byte buffer for Telnet state record
  6179.         0000h:0000h to use TelAPI internally-allocated space
  6180. Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #0301)
  6181.     ES:SI buffer filled with state record
  6182.     ES:SI -> internally-allocated state record in some versions
  6183. Notes:    the remote host identifier may be used to refer to this connection
  6184.     this function returns immediately; use AH=EDh to check whether the
  6185.       connection has been established yet
  6186.     this function is not supported by the Microdyne TelAPI v3.7
  6187. SeeAlso: AH=E0h"TelAPI",AH=EDh,AX=FF00h
  6188. --------N-14ED-------------------------------
  6189. INT 14 - TelAPI - "telpoll" - POLL TELNET SESSION FOR CONNECTION COMPLETION
  6190.     AH = EDh
  6191.     BX = connection ID (see AH=ECh)
  6192. Return: AX = status (0000h,0001h,FFFFh,etc.) (see also #0301)
  6193.         0000h session now connected
  6194.         0001h connection still in progress
  6195. Note:    this function is not supported by the Microdyne TelAPI v3.7
  6196. SeeAlso: AH=EDh,AX=FF00h
  6197. --------a-14F0F0-----------------------------
  6198. INT 14 - ASAP v1.0 - ???
  6199.     AX = F0F0h
  6200.     DX = ???
  6201.     ???
  6202. Return: ???
  6203. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader
  6204.       by MicroTalk
  6205. SeeAlso: AX=F0F1h
  6206. --------a-14F0F1DX0000-----------------------
  6207. INT 14 - ASAP v1.0 - INSTALLATION CHECK
  6208.     AX = F0F1h
  6209.     DX = 0000h
  6210. Return: DX = segment of resident code
  6211.         0000h if not installed
  6212. Program: ASAP (Automatic Screen Access Program) is a shareware screen reader
  6213.       by MicroTalk
  6214. SeeAlso: AX=F0F0h,INT 10/AX=3800h
  6215. --------S-14F4FF-----------------------------
  6216. INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
  6217.     AX = F4FFh
  6218.     DX = port (00h-03h)
  6219. Return: CF clear if present
  6220.         AX = 0000h
  6221.     CF set if not present
  6222.         AX <> 0000h
  6223. SeeAlso: AH=36h"ComShare",AH=F9h,AH=FCh
  6224. --------S-14F9-------------------------------
  6225. INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
  6226.     AH = F9h
  6227.     DX = port (00h-03h)
  6228. Return: nothing
  6229. SeeAlso: AX=F4FFh
  6230. --------S-14FA-------------------------------
  6231. INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
  6232.     AH = FAh
  6233.     DX = port (00h-03h)
  6234. Return: nothing
  6235. SeeAlso: AH=07h"MBBIOS",AH=1Ah,AH=8Ah
  6236. --------S-14FB-------------------------------
  6237. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
  6238.     AH = FBh
  6239.     AL = modem control register (see #0238 at AH=05h)
  6240.     DX = port (00h-03h)
  6241. Return: nothing
  6242. SeeAlso: AH=05h"SERIAL"
  6243. --------S-14FC-------------------------------
  6244. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
  6245.     AH = FCh
  6246.     DX = port (00h-03h)
  6247. Return: AH = RS232 status bits (see #0208 at AH=03h)
  6248.     AL = character
  6249. SeeAlso: AH=02h,AH=0Ch,AX=FF02h
  6250. --------S-14FD02-----------------------------
  6251. INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
  6252.     AX = FD02h
  6253. Return: CX = number of characters available
  6254. --------N-14FF00-----------------------------
  6255. INT 14 - TelAPI - "telcheck" - INSTALLATION CHECK
  6256.     AX = FF00h
  6257. Return: AX = 00FFh if installed
  6258.         BX = version number * 100 (decimal)
  6259. SeeAlso: AH=E6h,AX=F4FFh
  6260. --------S-14FF01-----------------------------
  6261. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET SEND BUFFER
  6262.     AX = FF01h
  6263.     CX = length of buffer (0000h to cancel buffer assignment)
  6264.     DX = port (00h-03h)
  6265.     ES:BX -> send buffer
  6266. Return: nothing
  6267. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF02h
  6268. --------S-14FF02-----------------------------
  6269. INT 14 - IBM/Yale EBIOS SERIAL I/O - SET RECEIVE BUFFER
  6270.     AX = FF02h
  6271.     CX = length of buffer (0000h to cancel buffer assignment)
  6272.     DX = port (00h-03h)
  6273.     ES:BX -> receive buffer
  6274. Return: nothing
  6275. SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF01h
  6276. --------S-14FFF8-----------------------------
  6277. INT 14 - COMM-DRV v14.0 - SET BAUD RATE DIVISOR
  6278.     AX = FFF8h
  6279.     BX = card type (sub-device number)
  6280.     CX = new baudrate divisor
  6281.     DX = index to baud rate
  6282. Return: AH bit 7 set on error
  6283.     AH bit 7 clear if successful
  6284. Program: COMM-DRV is a universal serial communications driver by Willies'
  6285.       Computer Software Company, which supports standard INT 14 and
  6286.       FOSSIL calls as well as its own interfaces
  6287. SeeAlso: AX=8000h"COMM-DRV"
  6288. --------S-14FFFB-----------------------------
  6289. INT 14 - COMM-DRV v14.0 - GET HIGHEST ALLOWED PORT NUMBER
  6290.     AX = FFFBh
  6291.     DX = port number
  6292. Return: AH bit 7 set on error
  6293.     AH bit 7 clear if successful
  6294.         BX = highest port number
  6295. --------S-14FFFC-----------------------------
  6296. INT 14 - COMM-DRV v14.0 - GET INT 14 FLAGS
  6297.     AX = FFFCh
  6298.     DX = port number
  6299. Return: AH bit 7 set on error
  6300.     AH bit 7 clear if successful
  6301.         BX = flags (see #0307)
  6302. SeeAlso: AX=FFFDh
  6303.  
  6304. Bitfields for INT 14h flags:
  6305. Bit(s)    Description    (Table 0307)
  6306.  0    port active for INT 14h
  6307.  1    interface behaving like a FOSSIL driver
  6308. --------S-14FFFD-----------------------------
  6309. INT 14 - COMM-DRV v14.0 - SET INT 14 FLAGS
  6310.     AX = FFFDh
  6311.     BX = flags (see #0307)
  6312.     DX = port number
  6313. Return: AH bit 7 set on error
  6314.     AH bit 7 clear if successful
  6315. SeeAlso: AX=FFFCh
  6316. --------S-14FFFE-----------------------------
  6317. INT 14 - COMM-DRV v14.0 - RESTORE INT 14 VECTOR TO ORIGINAL
  6318.     AX = FFFEh
  6319. Return: AH bit 7 set on error
  6320.     AH bit 7 clear if successful
  6321. --------S-14FFFF-----------------------------
  6322. INT 14 - COMM-DRV v14.0 - GET INT 14 INFORMATION AREA
  6323.     AX = FFFFh
  6324.     BX:SI -> DWORD buffer for address of information area (see #0308)
  6325.           (initialized to zeros)
  6326. Return: BX:SI buffer filled with nonzero value if installed
  6327. Program: COMM-DRV is a universal serial communications driver by Willies'
  6328.       Computer Software Company, which supports standard INT 14 and
  6329.       FOSSIL calls as well as its own interfaces
  6330. Index:    installation check;COMM-DRV
  6331.  
  6332. Format of COMM-DRV information area:
  6333. Offset    Size    Description    (Table 0308)
  6334.  00h  8 BYTEs    signature "COMM-DRV"
  6335.  08h  2 BYTEs    00h,00h
  6336.  0Ah    DWORD    -> direct address mapping table
  6337.  0Eh    DWORD    previous INT 14 vector
  6338. --------t-15---------------------------------
  6339. INT 15 - Microsoft TSR Specification
  6340.     No additional information available at this time.
  6341. --------B-1500-------------------------------
  6342. INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only)
  6343.     AH = 00h
  6344. Return: CF set on error
  6345.         AH = 86h no cassette present
  6346.     CF clear if successful
  6347. SeeAlso: AH=01h"CASSETTE"
  6348. --------M-1500-------------------------------
  6349. INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
  6350.     AH = 00h
  6351. Return: CX = signed X count
  6352.     DX = signed Y count
  6353. --------O-1500-------------------------------
  6354. INT 15 - VMiX v2+ - INSTALLATION CHECK
  6355.     AH = 00h
  6356. Return: DX = 0798h if installed
  6357.         AX = version (AH = major, AL = minor)
  6358. --------T-1500-------------------------------
  6359. INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
  6360.     AH = 00h
  6361. Return: nothing
  6362. Note:    if issued by the highest-priority task while MultiDOS is using
  6363.       priority-based rather than round-robin scheduling, control will be
  6364.       returned to the caller immediately
  6365. SeeAlso: AH=03h"MultiDOS",AX=1000h
  6366. --------B-1501-------------------------------
  6367. INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only)
  6368.     AH = 01h
  6369. Return: CF set on error
  6370.         AH = 86h no cassette present
  6371.     CF clear if successful
  6372. SeeAlso: AH=00h"CASSETTE"
  6373. --------b-1501-------------------------------
  6374. INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
  6375.     AH = 01h
  6376.     AL = NVRAM location (00h to 3Fh) (see #0309)
  6377.     BL = NVRAM data value
  6378. Return: AH = return code
  6379.         00h OK
  6380.         01h address bad
  6381.         02h write error
  6382. SeeAlso: AH=02h"Amstrad"
  6383.  
  6384. Format of Amstrad NVRAM:
  6385. Offset    Size    Description    (Table 0309)
  6386.  00h    BYTE    time of day: seconds
  6387.  01h    BYTE    alarm time: seconds
  6388.  02h    BYTE    time of day: minutes
  6389.  03h    BYTE    alarm time: minutes
  6390.  04h    BYTE    time of day: hours
  6391.  05h    BYTE    alarm time: hours
  6392.  06h    BYTE    day of week, 1 = Sunday
  6393.  07h    BYTE    day of month
  6394.  08h    BYTE    month
  6395.  09h    BYTE    year mod 100
  6396.  0Ah    BYTE    RTC status register A (see #0310)
  6397.  0Bh    BYTE    RTC status register B (see #0311)
  6398.  0Ch    BYTE    RTC status register C (read-only) (see #0312)
  6399.  0Dh    BYTE    RTC status register D
  6400.         bit 7: battery good
  6401.  0Eh  6 BYTEs    time and date machine last used
  6402.  14h    BYTE    user RAM checksum
  6403.  15h    WORD    Enter key scancode/ASCII code
  6404.  17h    WORD    Forward delete key scancode/ASCII code
  6405.  19h    WORD    Joystick fire button 1 scancode/ASCII code
  6406.  1Bh    WORD    Joystick fire button 2 scancode/ASCII code
  6407.  1Dh    WORD    mouse button 1 scancode/ASCII code
  6408.  1Fh    WORD    mouse button 2 scancode/ASCII code
  6409.  21h    BYTE    mouse X scaling factor
  6410.  22h    BYTE    mouse Y scaling factor
  6411.  23h    BYTE    initial VDU mode and drive count
  6412.  24h    BYTE    initial VDU character attribute
  6413.  25h    BYTE    size of RAM disk in 2K blocks
  6414.  26h    BYTE    initial system UART setup byte
  6415.  27h    BYTE    initial external UART setup byte
  6416.  28h 24 BYTEs    available for user application
  6417. Note:    bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
  6418.       the clock chip
  6419.  
  6420. Bitfields for RTC status register A:
  6421. Bit(s)    Description    (Table 0310)
  6422.  7    set if date/time being updated
  6423.  6-4    time base speed, default 010 = 32768 Hz
  6424.  3-0    interrupt rate selection, default 0110 = 1024 Hz
  6425. SeeAlso: #0309
  6426.  
  6427. Bitfields for RTC status register B:
  6428. Bit(s)    Description    (Table 0311)
  6429.  7    clear if normal update, set if abort update
  6430.  6    periodic interrupt enable
  6431.  5    alarm interrupt enable
  6432.  4    update end interrupt enable
  6433.  3    square wave enable
  6434.  2    date mode (clear = BCD, set = binary)
  6435.  1    24-hour format
  6436.  0    daylight saving time enable
  6437. SeeAlso: #0309
  6438.  
  6439. Bitfields for RTC status register C:
  6440. Bit(s)    Description    (Table 0312)
  6441.  7    IRQF flag
  6442.  6    PF flag
  6443.  5    AF flag
  6444.  4    UF flag
  6445. SeeAlso: #0309
  6446. --------O-1501-------------------------------
  6447. INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER
  6448.     AH = 01h
  6449.     STACK:    WORD    object ID of requestor
  6450.         DWORD    pointer to ASCIZ name of requested method
  6451.             "assign" assign channel to object
  6452.             "deassign" deassign channel
  6453.             "cursor" set cursor on/off
  6454.             "init" initialize comm port
  6455.             "open" open I/O channel
  6456.             "position" set cursor position
  6457.             "receive" get buffered packet from comm port
  6458.             "send" send buffered packet to comm port
  6459.             "vio" set current virtual I/O to specified channel
  6460.             "window" make window at cursor position
  6461.         ---if "assign"---
  6462.          WORD    object UID
  6463.          WORD    caller UID/PID
  6464.          DWORD    CSL with port
  6465.         ---if "deassign"---
  6466.          WORD    channel ID
  6467.         ---if "cursor"---
  6468.          WORD    channel ID (must be a SRCSINK)
  6469.          WORD    new state (0000h off, 0001h on)
  6470.         ---if "init"---
  6471.          WORD    channel ID (must be a SRCSINK)
  6472.          WORD    comm port number (00h-03h)
  6473.          WORD    UART init code
  6474.         ---if "open"---
  6475.          WORD    channel ID
  6476.         ---if "position"---
  6477.          WORD    channel ID (must be a SRCSINK)
  6478.          WORD    position (high byte = row, low byte = column)
  6479.         ---if "receive"---
  6480.          DWORD    pointer to buffer
  6481.         ---if "send"---
  6482.          WORD    length of buffer
  6483.          DWORD    pointer to buffer
  6484.         ---if "vio"---
  6485.          WORD    channel ID (must be a SRCSINK)
  6486.         ---if "window"---
  6487.          WORD    top left (high byte = row, low byte = column)
  6488.          WORD    bottom right (high byte = row, low byte = column)
  6489. Return: DX:AX -> IRP structure or 0000h:0000h
  6490. SeeAlso: AH=00h"VMiX",AH=02h"VMiX"
  6491. --------T-1501-------------------------------
  6492. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
  6493.     AH = 01h
  6494.     AL = semaphore number (00h-3Fh)
  6495. Return: AH = status
  6496.         00h successful
  6497.         02h invalid semaphore number
  6498. Notes:    if the semaphore is not owned, ownership is assigned to the calling
  6499.       task and the call returns immediately
  6500.     if the semaphore is already owned by another task, the calling task
  6501.       is placed on a queue for the semaphore and suspended until it can
  6502.       become owner of the semaphore
  6503.     semaphore 0 is used internally by MultiDOS to synchronize DOS access
  6504. SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS"
  6505. --------B-1502-------------------------------
  6506. INT 15 - CASSETTE - READ DATA (PC and PCjr only)
  6507.     AH = 02h
  6508.     CX = number of bytes to read
  6509.     ES:BX -> buffer
  6510. Return: CF clear if successful
  6511.         DX = number of bytes read
  6512.         ES:BX -> byte following last byte read
  6513.     CF set on error
  6514.     AH = status (see #0313)
  6515. SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE"
  6516.  
  6517. (Table 0313)
  6518. Values for Cassette status:
  6519.  00h    successful
  6520.  01h    CRC error
  6521.  02h    bad tape signals
  6522.  04h    no data
  6523.  80h    invalid command
  6524.  86h    no cassette present
  6525. --------b-1502-------------------------------
  6526. INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
  6527.     AH = 02h
  6528.     AL = NVRAM location (00h to 3Fh)
  6529. Return: AH = return code
  6530.         00h OK
  6531.         01h address bad
  6532.         02h checksum error
  6533.     AL = NVRAM data value
  6534. SeeAlso: AH=01h"Amstrad"
  6535. --------O-1502-------------------------------
  6536. INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER
  6537.     AH = 02h
  6538.     STACK:    WORD    object ID of requestor
  6539.         DWORD    pointer to ASCIZ name of requested method
  6540.             "assign" allocate low memory block
  6541.             "assign extended" allocate extended memory pages
  6542.             "assign gdt" allocate GDT selector
  6543.             "paged" allocate low paged memory
  6544.             "paged extended" alllocate extended memory pages
  6545.             "deassign" free memory block
  6546.             "deassign gdt" free GDT selector
  6547.             "getvpage" get physical address for virtual page
  6548.             "setvpage" set physical address for virtual page
  6549.             "info" get VMiX memory usage info block
  6550.             "move" move contents of 32-bit memory
  6551.             "newmcb" make new DOS memory control block
  6552.             "owner" get process ID of MCB or PSP owner
  6553.             "umb" allocate upper memory block
  6554.             "video" toggle system use of vidoe memory and get stat
  6555.         ---if "assign"---
  6556.          WORD    number of objects
  6557.          WORD    size in bytes (multiple of 512 bytes)
  6558.         ---if "assign extended"---
  6559.          WORD    number of objects
  6560.          WORD    size in bytes (multiple of 4K)
  6561.         ---if "assign gdt"---
  6562.          WORD    access type (low byte)
  6563.          WORD    segment size in paragraphs
  6564.          DWORD    pointer to start of physical segment
  6565.         ---if "paged"---
  6566.          WORD    number of 512-byte pages
  6567.         ---if "paged extended"
  6568.          WORD    number of 4K pages
  6569.         ---if "deassign"---
  6570.          DWORD    pointer returned by previous allocation call
  6571.         ---if "deassign gdt"---
  6572.          WORD    GDT selector
  6573.         ---if "getvpage"---
  6574.          WORD    owner's process ID
  6575.          DWORD    pointer to buffer for page structure (struct VPGE)
  6576.         ---if "setvpage"---
  6577.          WORD    owner's process ID
  6578.          DWORD    pointer to new page structure (struct VPGE)
  6579.         ---if "info"---
  6580.          no additional arguments
  6581.         ---if "move"
  6582.          DWORD    32-bit source address
  6583.          DWORD    32-bit destination address
  6584.          WORD    number of words to move
  6585.         ---if "newmcb"---
  6586.          DWORD    pointer to new MCB's location
  6587.          WORD    size of memory block
  6588.          DWORD    pointer to ASCIZ name string (max 8 chars)
  6589.         ---if "owner"---
  6590.          WORD    MCB or PSP segment
  6591.         ---if "umb"---
  6592.          WORD    size in paragraphs
  6593.         ---if "video"---
  6594.          no additional arguments
  6595. Return: DX:AX -> memory block or VPGE struct or 0000h:0000h
  6596. SeeAlso: AH=00h"VMiX",AH=01h"VMiX"
  6597. --------T-1502-------------------------------
  6598. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
  6599.     AH = 02h
  6600.     AL = semaphore number (00h-3Fh)
  6601. Return: AH = status
  6602.         00h successful
  6603.         01h not semaphore owner
  6604.         02h invalid semaphore number
  6605. Notes:    if any tasks are waiting for the semaphore, the first task on the wait
  6606.       queue will become the new owner and be reawakened
  6607.     do not use within an interrupt handler
  6608. SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS"
  6609. --------B-1503-------------------------------
  6610. INT 15 - CASSETTE - WRITE DATA (PC and PCjr only)
  6611.     AH = 03h
  6612.     CX = number of bytes to write
  6613.     ES:BX -> data buffer
  6614. Return: CF clear if successful
  6615.         ES:BX -> byte following last byte written
  6616.     CF set on error
  6617.     AH = status (see #0313)
  6618.     CX = 0000h
  6619. SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE"
  6620. --------V-1503-------------------------------
  6621. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
  6622.     AH = 03h
  6623.     AL = value (I,R,G,B bits)
  6624. Return: nothing
  6625. SeeAlso: AH=04h"Amstrad"
  6626. --------O-1503-------------------------------
  6627. INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT
  6628.     AH = 03h
  6629.     STACK:    DWORD    pointer to ASCII prompt
  6630.         WORD    field outline character
  6631.         WORD    length of input field (max 7Fh)
  6632.         DWORD    address of pointer to input buffer
  6633. Return: AX = length of input (input buffer is padded with blanks)
  6634. SeeAlso: AH=04h"VMiX"
  6635. --------T-1503-------------------------------
  6636. INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
  6637.     AH = 03h
  6638.     DX = number of time slices to remain suspended
  6639. Return: after specified interval has elapsed
  6640. Note:    when priority-based scheduling is in use, high-priority tasks should
  6641.       use this function to yield the processor
  6642. SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS"
  6643. --------B-1504-------------------------------
  6644. INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
  6645.     AH = 04h
  6646.     ES:DI -> 32-byte results buffer for System Parameter Table (see #0314)
  6647.     DS = segment containing ABIOS RAM extensions (zero if none)
  6648. Return: CF clear if successful
  6649.         AH = 00h success
  6650.         ES:DI buffer filled
  6651.         AL destroyed
  6652.     CF set on failure
  6653.         AX destroyed
  6654.         AH = 80h/86h if not supported
  6655. SeeAlso: AH=05h"ABIOS",AH=C1h
  6656.  
  6657. Format of ABIOS System Parameter Table:
  6658. Offset    Size    Description    (Table 0314)
  6659.  00h    DWORD    FAR address of ABIOS Common Start Routine
  6660.  04h    DWORD    FAR address of ABIOS Interrupt Routine
  6661.  08h    DWORD    FAR address of ABIOS Time-out Routine
  6662.  0Ch    WORD    number of bytes of stack required by this ABIOS implementation
  6663.  0Eh 16 BYTEs    reserved
  6664.  1Eh    WORD    number of entries in initialization table
  6665. --------V-1504-------------------------------
  6666. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
  6667.     AH = 04h
  6668.     AL = value (RDSEL1 and RDSEL0)
  6669. Return: nothing
  6670. SeeAlso: AH=03h"Amstrad",AH=05h"Amstrad"
  6671. --------O-1504-------------------------------
  6672. INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM
  6673.     AH = 04h
  6674.     STACK:    DWORD    control string
  6675.         DWORD    array of arguments
  6676. Return: nothing
  6677. SeeAlso: AH=03h"VMiX"
  6678. --------T-1504-------------------------------
  6679. INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
  6680.     AH = 04h
  6681.     AL = mailbox number (00h-3Fh)
  6682.     CX = message length in bytes
  6683.     DS:SI -> message
  6684. Return: AH = status
  6685.         00h successful
  6686.         01h out of message memory
  6687.         02h invalid mailbox number
  6688. Note:    the message is copied into a system buffer; the caller may immediately
  6689.       reuse its buffer
  6690. SeeAlso: AH=05h"MultiDOS"
  6691. --------B-1505-------------------------------
  6692. INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS)
  6693.     AH = 05h
  6694.     ES:DI -> results buffer of length 18h * Number_of_Entries (see #0315)
  6695.     DS = segment containing ABIOS RAM extensions (zero if none)
  6696. Return: CF clear if successful
  6697.         AH = 00h success
  6698.         ES:DI buffer filled
  6699.         AL destroyed
  6700.     CF set on failure
  6701.         AX destroyed
  6702.         AH = 80h/86h if not supported
  6703. SeeAlso: AH=04h"ABIOS",AH=C1h
  6704.  
  6705. Format of one entry of ABIOS Initialization Table:
  6706. Offset    Size    Description    (Table 0315)
  6707.  00h    WORD    device ID (see #0316)
  6708.  02h    WORD    number of Logical IDs
  6709.  04h    WORD    Device Block length (zero for ABIOS patch or extension)
  6710.  06h    DWORD    -> init routine for Device Block and Function Transfer Table
  6711.  0Ah    WORD    request block length
  6712.  0Ch    WORD    Function Transfer Table length (zero for a patch)
  6713.  0Eh    WORD    Data Pointers length (in Common Data Area)
  6714.  10h    BYTE    secondary device ID (hardware level this ABIOS ver supports)
  6715.  11h    BYTE    revision (device driver revision level this ABIOS supports)
  6716.  12h  6 BYTEs    reserved
  6717.  
  6718. (Table 0316)
  6719. Values for ABIOS device ID:
  6720.  00h    ABIOS internal calls
  6721.  01h    floppy disk
  6722.  02h    hard disk
  6723.  03h    video
  6724.  04h    keyboard
  6725.  05h    parallel port
  6726.  06h    serial port
  6727.  07h    system timer
  6728.  08h    real-time clock
  6729.  09h    system services
  6730.  0Ah    NMI
  6731.  0Bh    mouse
  6732.  0Eh    CMOS RAM
  6733.  0Fh    DMA
  6734.  10h    Programmable Option Select (POS)
  6735.  16h    keyboard password
  6736. --------V-1505-------------------------------
  6737. INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
  6738.     AH = 05h
  6739.     AL = value (I,R,G,B bits)
  6740. Return: nothing
  6741. SeeAlso: AH=04h"Amstrad"
  6742. --------O-1505-------------------------------
  6743. INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS
  6744.     AH = 05h
  6745. Return: AX = process ID
  6746. SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX"
  6747. --------T-1505-------------------------------
  6748. INT 15 - MultiDOS Plus - CHECK MAILBOX
  6749.     AH = 05h
  6750.     AL = mailbox number (00h-3Fh)
  6751. Return: AH = status
  6752.         00h successful
  6753.         DX = length of first message in queue, 0000h if no message
  6754.         02h invalid mailbox number
  6755. SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS"
  6756. --------b-1506-------------------------------
  6757. INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
  6758.     AH = 06h
  6759. Return: BX = version number
  6760. --------O-1506-------------------------------
  6761. INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK
  6762.     AH = 06h
  6763.     STACK:    WORD    process ID
  6764. Return: DX:AX -> process control block
  6765. SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX"
  6766. --------T-1506-------------------------------
  6767. INT 15 - MultiDOS Plus - READ MAILBOX
  6768.     AH = 06h
  6769.     AL = mailbox number (00h-3Fh)
  6770.     CX = size of buffer in bytes
  6771.     ES:DI -> buffer for message
  6772. Return: AH = status
  6773.         00h successful
  6774.         CX = number of bytes copied
  6775.         DX = actual length of message
  6776.         02h invalid mailbox number
  6777. Note:    if the caller's buffer is not large enough, the message is truncated
  6778.       and the remainder is lost
  6779. SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS"
  6780. --------O-1507-------------------------------
  6781. INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK
  6782.     AH = 07h
  6783.     STACK:    WORD    object type
  6784. Return: DX:AX -> object control block
  6785. SeeAlso: AH=06h"VMiX",AH=08h"VMiX"
  6786. --------T-1507-------------------------------
  6787. INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
  6788.     AH = 07h
  6789.     BX:CX = entry point of new task
  6790.     DX = stack size in paragraphs
  6791. Return: AH = status
  6792.         00h successful
  6793.         01h no free task control blocks
  6794.         02h no free memory for task's stack
  6795. Note:    execution returns immediately to calling task
  6796. SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS"
  6797. --------O-1508-------------------------------
  6798. INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK
  6799.     AH = 08h
  6800.     STACK:    WORD    channel ID
  6801. Return: DX:AX -> channel control block
  6802. SeeAlso: AH=06h"VMiX",AH=07h"VMiX"
  6803. --------T-1508-------------------------------
  6804. INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
  6805.     AH = 08h
  6806. Return: calling task terminated, so execution never returns to caller
  6807. Notes:    an internal task must be terminated with this function rather than a
  6808.       DOS termination function
  6809.     task's stack space is returned to parent task's memory pool
  6810. SeeAlso: AH=07h"MultiDOS"
  6811. --------O-1509-------------------------------
  6812. INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT
  6813.     AH = 09h
  6814.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  6815.         WORD    subqueue ID
  6816. Return: AX = queue ID
  6817. SeeAlso: AH=0Ah"VMiX"
  6818. --------T-1509-------------------------------
  6819. INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
  6820.     AH = 09h
  6821.     AL = new priority
  6822. Return: nothing
  6823. Note:    the priority has different meanings depending on whether priority-
  6824.       based or round-robin scheduling is used
  6825. SeeAlso: AH=07h"MultiDOS"
  6826. --------O-150A-------------------------------
  6827. INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT
  6828.     AH = 0Ah
  6829.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  6830.         WORD    ID of current element in queue chain
  6831. Return: AX = ID of next element
  6832. SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX"
  6833. --------T-150A-------------------------------
  6834. INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
  6835.     AH = 0Ah
  6836.     AL = new interval
  6837.         00h = 55.0 ms (default)
  6838.         80h = 27.5 ms
  6839.         40h = 13.75 ms
  6840.         20h = 6.88 ms
  6841.         10h = 3.44 ms
  6842.         08h = 1.72 ms
  6843. SeeAlso: AH=03h"MultiDOS"
  6844. --------O-150B-------------------------------
  6845. INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER
  6846.     AH = 0Bh
  6847.     STACK:    WORD    caller's UID
  6848.         DWORD    pointer to ASCIZ name of requested method
  6849.             "abort" abort current send/receive on comm port
  6850.             "block" start/end critical section
  6851.             "close" terminate interrupt-drive comm I/O
  6852.             "open" prepare comm port for interrupt-driven I/O
  6853.             "delay" set delay timer and wait
  6854.             "hibernate" put process to sleep
  6855.             "ints" enable/disable interrupt-driven INT 14h
  6856.             "length" get current send/receive buffer offsets
  6857.             "kswitch" switch stacks
  6858.             "numproc" get number of active processes
  6859.             "protocol" set protocol function for comm interrupts
  6860.             "relocate" set/reset VMiX flag for relocating to himem
  6861.             "status" get current open comm port status
  6862.             "wake" awaken a process
  6863.             "xport" get comm port polled for logins
  6864.         ---if "abort"---
  6865.          no additional arguments
  6866.         ---if "block"---
  6867.          WORD    0000h end, 0001h start
  6868.         ---if "close"---
  6869.          no additional arguments
  6870.         ---if "open"---
  6871.          WORD    comm port (00h-03h)
  6872.          WORD    BIOS parameter byte (see #0204 at INT 14/AH=00h),
  6873.             except bits 7-5: 000 = 19200, 001 = 38400, 011 = 115200
  6874.         ---if "delay"---
  6875.          WORD    time in seconds
  6876.         ---if "hibernate"---
  6877.          WORD    process ID
  6878.         ---if "ints"---
  6879.          WORD    0000h if no, 0001h if yes
  6880.         ---if "length","numproc","relocate","status","xport"---
  6881.          no additional arguments
  6882.         ---if "kswitch"---
  6883.          DWORD    pointer to new stack
  6884.         ---if "protocol"---
  6885.          DWORD    pointer to function (must be in low "assign"ed memory
  6886.             when in 386 mode)
  6887.         ---if "wake"---
  6888.          WORD    process ID
  6889. Return: DX:AX -> result or 0000h:0000h
  6890.         ---if "length"---
  6891.          BYTE    receive offset
  6892.          BYTE    send offset
  6893.         ---if "kswitch"---
  6894.          DWORD    old stack pointer
  6895.         ---if "numproc"---
  6896.          WORD    number of active processes
  6897.         ---if "status"---
  6898.          current open comm port status
  6899.         ---if "xport"---
  6900.          current comm port being polled for logins
  6901. Note:    the "delay" command reportedly disables the keyboard until the delay
  6902.       completes
  6903. SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX"
  6904. --------T-150B-------------------------------
  6905. INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
  6906.     AH = 0Bh
  6907. Return: nothing
  6908. Notes:    sets calling task's screen pointer to actual screen memory; the pointer
  6909.       may be restored with AH=0Ch
  6910.     caller's video mode must be same as foreground task's video mode
  6911.     any text written while in the background will be saved to the
  6912.       foreground task's virtual screen when it switches to the background
  6913.     useful if a background task wants to display a message on the
  6914.       foreground screen
  6915. SeeAlso: AH=0Ch"MultiDOS"
  6916. --------O-150C-------------------------------
  6917. INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK
  6918.     AH = 0Ch
  6919.     STACK:    WORD    process ID
  6920. Return: DX:AX -> TSS stack store
  6921. SeeAlso: AH=00h"VMiX"
  6922. --------T-150C-------------------------------
  6923. INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
  6924.     AH = 0Ch
  6925. Return: nothing
  6926. Note:    restores task's screen pointer saved by AH=0Bh; must not be called
  6927.       unless AH=0Bh has been called first
  6928. SeeAlso: AH=0Bh"MultiDOS"
  6929. --------O-150D-------------------------------
  6930. INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL
  6931.     AH = 0Dh
  6932.     STACK:    DWORD    ASCIZ string starting with requested I/O channel and
  6933.             followed by standard VMiX shell command string
  6934. Return: AX = process ID or error code "SYS_ERROR"
  6935. Note:    the maximum string length is 7Fh characters
  6936. SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh
  6937. --------T-150D-------------------------------
  6938. INT 15 - MultiDOS Plus - DISABLE MULTITASKING
  6939.     AH = 0Dh
  6940. Return: nothing
  6941. Note:    calling task receives all time slices until AH=0Eh is called; this
  6942.       allows time-critical events or nonreentrant code to be processed
  6943. SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS"
  6944. --------O-150E-------------------------------
  6945. INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS
  6946.     AH = 0Eh
  6947.     STACK:    WORD    process ID
  6948. Return: AX = status (SYS_OK or SYS_ERROR)
  6949. SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX"
  6950. --------T-150E-------------------------------
  6951. INT 15 - MultiDOS Plus - ENABLE MULTITASKING
  6952.     AH = 0Eh
  6953. Return: nothing
  6954. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS"
  6955. --------d-150F-------------------------------
  6956. INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
  6957.     AH = 0Fh
  6958.     AL = phase code
  6959.         00h reserved
  6960.         01h surface analysis
  6961.         02h formatting
  6962. Return: CF clear if formatting should continue
  6963.     CF set if formatting should terminate
  6964. Note:    called during ESDI drive formatting after each cylinder is completed
  6965. SeeAlso: INT 13/AH=1Ah
  6966. --------O-150F-------------------------------
  6967. INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT
  6968.     AH = 0Fh
  6969.     STACK:    WORD    queue ID (0 = process queue, 1 = object q, 3 = type q)
  6970.         WORD    ID of element in queue chain
  6971. Return: AX = key
  6972. SeeAlso: AH=0Ah"VMiX"
  6973. --------T-150F-------------------------------
  6974. INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
  6975.     AH = 0Fh
  6976.     DS:BX -> ASCIZ command
  6977. Return: after command has been processed
  6978. Notes:    specified string is executed as if it had been typed at the MultiDOS
  6979.       command prompt
  6980.     the task is placed on a queue which MultiDOS examines periodically and
  6981.       is suspended until MultiDOS has processed the command
  6982.     all lowercase characters up to the first blank are converted to upper
  6983.       case within the given buffer
  6984. --------O-1510-------------------------------
  6985. INT 15 - VMiX - "sys_virtual" - EXECUTE CONFORMING FUNCTION IN PROTECTED MODE
  6986.     AH = 10h
  6987.     STACK:    DWORD    pointer to function
  6988.           N WORDs    function args
  6989. Return: AX = function's return value??? (not specified in documentation)
  6990. Note:    while the function is executing, the following global descriptors are
  6991.       available:
  6992.         20h stack segment
  6993.         38h code segment of function
  6994.         40h data alias for function's code segment
  6995.       additional GDT descriptors can be allocated using AH=02h with
  6996.       function "assign gdt"
  6997. SeeAlso: AH=02h"VMiX",AH=51h"VMiX"
  6998. --------T-1510-------------------------------
  6999. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
  7000.     AH = 10h
  7001.     AL = semaphore number (00h-3Fh)
  7002. Return: AH = status
  7003.         00h semaphore not in use
  7004.         01h semaphore owned by another task
  7005.         02h invalid semaphore number
  7006.         03h semaphore owned by caller
  7007. SeeAlso: AH=02h"MultiDOS",AH=0Dh"MultiDOS",AH=1Dh"MultiDOS"
  7008. --------Q-151000-----------------------------
  7009. INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME
  7010.     AX = 1000h
  7011. Return: after other processes run
  7012. Note:    under DESQview, if the process issuing this call has hooked INT 08h,
  7013.       the current time-slice is set to expire at the next clock tick rather
  7014.       than immediately
  7015. SeeAlso: AH=00h"MultiDOS",AX=5305h,INT 21/AH=89h,INT 21/AH=EEh"DoubleDOS"
  7016. SeeAlso: INT 2F/AX=1680h,INT 60/DI=0106h,INT 62/AH=01h,INT 6F/AH=2Ah"F_YIELD"
  7017. SeeAlso: INT 7A/BX=000Ah,INT 7F/AH=02h"MultiLink",INT 7F/AH=E8h
  7018. --------Q-151001-----------------------------
  7019. INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  7020.     AX = 1001h
  7021.     BX = number of bytes to allocate
  7022. Return: ES:DI -> block of memory or 0000h:0000h (DV v2.26+)
  7023.     AX = status (DV v2.42)
  7024.         0000h successful
  7025.         0001h failed
  7026. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  7027.       common memory.  Under DV v2.42, this call never generates a user
  7028.       prompt regardless of the SETERROR value; instead, it always returns
  7029.       AX=0001h and ES:DI=0000h:0000h if out of memory
  7030. SeeAlso: AX=1002h,AX=102Eh,AX=DE0Ch,AX=DE15h
  7031. --------Q-151002-----------------------------
  7032. INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  7033.     AX = 1002h
  7034.     ES:DI -> previously allocated block
  7035. Return: block freed
  7036. SeeAlso: AX=1001h,AX=DE0Dh
  7037. --------Q-151003-----------------------------
  7038. INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
  7039.     AX = 1003h
  7040.     BH = attribute
  7041.     BL = character
  7042.     DX = segment of object handle for window
  7043. Return: nothing
  7044. Note:    BX=0000h does not display anything, it only positions the hardware
  7045.       cursor to the logical cursor's current position
  7046. --------Q-1510-------------------------------
  7047. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  7048.     AH = 10h
  7049.     AL = 04h thru 12h
  7050. Return: pops up "Programming error" window in DV 2.x
  7051. --------Q-151013-----------------------------
  7052. INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
  7053.     AX = 1013h
  7054.     ES:DI -> FAR service routine
  7055. Return: BX = bit mask indicating which bit was allocated
  7056.          0000h if no more bits available
  7057. SeeAlso: AX=1014h,AX=1015h
  7058. Note:    only a few TopView/DESQview API calls are allowed during a hardware
  7059.       interrupt; if other calls need to be made, the interrupt handler
  7060.       must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h)
  7061. --------Q-151014-----------------------------
  7062. INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
  7063.     AX = 1014h
  7064.     BX = bit mask from INT 15/AX=1013h
  7065. Return: nothing
  7066. SeeAlso: AX=1013h,AX=1015h
  7067. --------Q-151015-----------------------------
  7068. INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
  7069.     AX = 1015h
  7070.     BX = bit mask for interrupts to post
  7071. Return: indicated routines will be called: (DV 2.0x) at next task switch
  7072.                        (DV 2.2x) immediately on return from
  7073.                              hardware interrupt
  7074. Notes:    this is one of the few TopView calls which are allowed from a hardware
  7075.       interrupt handler
  7076.     the handler will be called with ES containing the segment of the handle
  7077.       of the next task to be executed; on return, ES must be the segment of
  7078.       a task handle
  7079. SeeAlso: AX=1013h,AX=1014h
  7080. --------Q-151016-----------------------------
  7081. INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE
  7082.     AX = 1016h
  7083.     ES:DI = possible object handle
  7084. Return: BX = status
  7085.         FFFFh if ES:DI is a valid object handle (see #0318)
  7086.         0000h if ES:DI is not
  7087. Note:    under DESQview versions prior to 2.50, an object handle is always a
  7088.       pointer to the object; for versions 2.50 and up, only task handles
  7089.       are always pointers--other handles may consist of a unique object
  7090.       number and offset into DESQview's common memory (see #0327)
  7091. SeeAlso: AX=DE14h,AX=DE2Bh,AX=DE2Ch
  7092.  
  7093. (Table 0317)
  7094. Values for DESQview object type:
  7095.  00h    window/task
  7096.  01h    mailbox
  7097.  02h    keyboard
  7098.  03h    timer
  7099.  04h    pointer
  7100.  05h    panel
  7101.  06h    objectq
  7102.  
  7103. Format of DESQview object:
  7104. Offset    Size    Description    (Table 0318)
  7105.  00h    WORD    offset in common memory of previous object of same type
  7106.  02h    WORD    offset in common memory of next object of same type
  7107.  04h    WORD    signature FEDCh (DV 2.42-)
  7108.         signature FEDCh or object number (DV 2.50+)
  7109.  06h    WORD    object type (see #0317)
  7110.  08h    DWORD    object handle to return to caller
  7111.  0Ch    DWORD    canonicalized object address (segment = common memory)
  7112.  10h    WORD    offset in common memory of owning task
  7113.         (0000h for unowned OBJECTQs)
  7114.  12h    WORD    mapping context
  7115.         offset in common memory of mapping context record (see #0320)
  7116.     remainder varies by object type and DESQview version
  7117. ---v2.42 keyboard object---
  7118.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  7119.         bit 15: keyboard opened
  7120.  16h  4 BYTEs    ???
  7121.  1Ah    WORD    priority in OBJECTQ???
  7122.  1Ch    ...
  7123.  25h    WORD    offset in common memory of ??? task
  7124.  27h  4 BYTEs    ???
  7125. ---v2.42 objectq object---
  7126.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  7127.         bit 15: OBJECTQ opened
  7128.  16h  2 BYTEs    ???
  7129.  18h    WORD    offset in common memory of ??? task
  7130.  1Ah  6 BYTEs    ???
  7131. ---v2.42 mailbox object---
  7132.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  7133.         bit 15: mailbox opened
  7134.  1Ah    WORD    priority in OBJECTQ???
  7135.  1Ch  6 BYTEs    ???
  7136.  22h    WORD    offset in common memory of mailbox name (counted string)
  7137.         0000h if no name
  7138.      <= 5 BYTEs ???
  7139. ---v2.22-2.42,2.52,2.60 window/task object---
  7140.  14h    BYTE    00h window, 01h task
  7141.  15h    BYTE    internal (not Switch menu) window number???
  7142.  16h    BYTE    internal (not Switch menu) window number???
  7143.  17h    WORD    segment of internal window record (see #0321)
  7144.  19h  2 BYTEs    ???
  7145.  1Bh    BYTE    cursor row
  7146.  1Ch    BYTE    cursor column
  7147.  1Dh    BYTE    visible window origin, row
  7148.  1Eh    BYTE    visible window origin, column
  7149.  1Fh    BYTE    window height (logical)
  7150.  20h    BYTE    window width (logical)
  7151.  21h    BYTE    window position, row
  7152.  22h    BYTE    window position, column
  7153.  23h    BYTE    window height (visible)
  7154.  24h    BYTE    window width (visible)
  7155.  25h    BYTE    row of top of frame (or window if unframed)
  7156.  26h    BYTE    column of left of frame (or window if unframed)
  7157.  27h    BYTE    window height (physical, including frame)
  7158.  28h    BYTE    window width (physical, including frame)
  7159.  29h    BYTE    unzoomed visible origin, row (00h before first zoom)
  7160.  2Ah    BYTE    unzoomed visible origin, column (00h before first zoom)
  7161.  2Bh    BYTE    unzoomed window position, row (00h before first zoom)
  7162.  2Ch    BYTE    unzoomed window position, column (00h before first zoom)
  7163.  2Dh    BYTE    unzoomed window height (00h before first zoom)
  7164.  2Eh    BYTE    unzoomed window width (00h before first zoom)
  7165.         unzoomed parameters above are updated when window is zoomed
  7166.           to full screen
  7167.  2Fh    BYTE    ??? initially logical window height
  7168.  30h    BYTE    ??? initially logical window width
  7169.  31h  2 BYTEs    ???
  7170.  33h    BYTE    minimum height of window
  7171.  34h    BYTE    minimum width of window
  7172.  35h    BYTE    maximum height of window
  7173.  36h    BYTE    maximum width of window
  7174.  37h  3 BYTEs    ???
  7175.  3Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  7176.  42h 24 BYTEs    attributes???
  7177.  5Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  7178.  62h  3 BYTEs    ???
  7179.  65h    BYTE    ??? bitflags
  7180.  66h    BYTE    bit 0: window is zoomed
  7181.  67h    BYTE    ???
  7182.  68h    WORD    offset in common memory of window name or 0000h if untitled
  7183.  6Ah    WORD    length of window name
  7184.  6Ch  2 BYTEs    ???
  7185.  6Eh    WORD    offset of logical cursor in window (in character cells)
  7186.  70h    DWORD    pointer to field table for window
  7187.  74h    BYTE    ???
  7188.  75h  2 BYTEs    ???
  7189.  77h    BYTE    number of last-visited field
  7190.  78h    DWORD    pointer to field table entry for last-visited field
  7191.  7Ch  3 BYTEs    ???
  7192.  7Fh    BYTE    select field marker character
  7193.  80h    BYTE    ??? bit flags
  7194.         bit 0: allow ECh window stream opcode to change reverse logattr
  7195.         bit 1: alternate field processing mode selected
  7196.  81h    BYTE    ???
  7197.  82h    DWORD    notification function (manager stream opcode 8Ah)
  7198.         no notification if segment = 0000h
  7199.  86h    DWORD    notification argument (manager stream opcode 8Bh)
  7200.  8Ah    WORD    offset in common memory of ??? window object or 0000h
  7201.  8Ch    WORD    offset in common memory of ??? window object or 0000h
  7202.  8Eh    WORD    offset in common memory of ??? window object or 0000h
  7203.  90h    BYTE    ??? bitflags
  7204.  91h    BYTE    ???
  7205.  ---task object only
  7206.  92h    BYTE    bit flags (bits 0-4)
  7207.  93h    BYTE    character for ??? (default 20h)
  7208.  94h    BYTE    ??? flag
  7209.  95h    WORD    offset in common memory of ???
  7210.  97h  2 BYTEs    ???
  7211.  99h    WORD    ???
  7212.  9Bh    BYTE    ??? bit flags
  7213.         bit 3: ???
  7214.         bit 6: perform protected-attribute processing on select fields
  7215.  9Ch    BYTE    ???
  7216.  9Dh    WORD    offset in common memory of current register save record
  7217.           (see #0319).    No register save record in use if < 01C0h
  7218.  9Fh    WORD    offset in common memory of task's keyboard object
  7219.  A1h    WORD    offset in common memory of task's OBJECTQ object
  7220.  A3h    WORD    offset in common memory of task's mailbox object
  7221.  A5h    WORD    semaphore: FFFFh if on user stack, else on task's private stack
  7222.  A7h    DWORD    user's SS:SP
  7223.  ABh    WORD    task's private SP (SS read from offset 0Ah)
  7224.  ADh  6 BYTEs    ???
  7225.  B3h    BYTE    ??? bit flags
  7226.         bit 0: run in foreground only
  7227.  B4h    BYTE    ???
  7228.  B5h    BYTE    ??? bitflags
  7229.  B6h    BYTE    task status (see #0455 at AX=DE2Ch)
  7230.  B7h  9 BYTEs    ???
  7231.  C0h    WORD    head pointer for keyboard buffer (wraps back to 00h after 80h)
  7232.  C2h    WORD    tail pointer for keyboard buffer (wraps back to 00h after 80h)
  7233.  C4h  2 BYTEs    ??? (0000h)
  7234.  C6h    WORD    segment of keyboard buffer for task
  7235.  C8h    WORD    offset in common memory of ??? keyboard object
  7236.  CAh    BYTE    ???
  7237. ---v2.22-2.42
  7238.  CBh    WORD    offset in common memory of ??? object
  7239.  CEh    BYTE    ??? flag
  7240.  CFh    WORD    offset in common memory of default notify window for task
  7241.           or 0000h if none
  7242.  D1h  4 BYTEs    ???
  7243.  D5h    BYTE    window number on Switch Window menu
  7244.  D6h  5 BYTEs    ???
  7245.  DBh    WORD    offset in common memory of ??? object
  7246.  DDh  2 BYTEs    ???
  7247.  DFh    WORD    API level for task
  7248.  E1h    WORD    offset in common memory of object task is waiting on if task
  7249.           status is 'waiting', else 0000h
  7250.  E7h    WORD    segment of ???
  7251.  E9h 4    BYTEs    ???
  7252.  EDh    WORD    EMS handle of virtualization buffer, 0000h if no virtualization
  7253.  F1h 12 BYTEs    ???
  7254.  FBh    WORD    ???
  7255.  FDh    BYTE    ???
  7256.  FFh 12 BYTEs    ???
  7257. 10Bh    DWORD    pointer to process record (see #0322,#0323)
  7258. 10Dh 10 BYTEs    ???
  7259. 119h    DWORD    SS:SP for ???
  7260. 11Dh  4 BYTEs    ???
  7261. 121h    DWORD    pointer to ???
  7262. 125h 25 BYTEs    ???
  7263. 13Eh    DWORD    pointer to ??? in system memory
  7264. ---v2.22
  7265. 142h  3 BYTEs    ???
  7266. 145h        task's default keyboard object
  7267. ---v2.42
  7268. 142h    DWORD    pointer to first task instance data record in system memory
  7269. 148h    DWORD    pointer to last task instance data record in system memory
  7270.         (see #0324)
  7271. 14Ah    BYTE    ???
  7272. 14Dh 42 BYTEs    task's default keyboard object
  7273. 177h 32 BYTEs    task's ObjectQ object
  7274. 197h 41 BYTEs    task's default mailbox object
  7275. 1C0h 24 BYTEs    first register save record
  7276. 450h    --    default top of private stack
  7277. ---v2.52 (probably all DV/X)
  7278. Same as v2.60 below except there is an extra 29 bytes inserted somewhere
  7279.   before offset 9Fh, but not yet known exactly where.  Also, for the WAIT_ON
  7280.   field (v2.60 offset E3h), some X apps (probably waiting on a socket) have
  7281.   0000h even when waiting.
  7282. ---v2.60
  7283.  CBh    WORD    ??? (added in 2.50 - rest is same as 2.42)
  7284.  CDh    WORD    offset in common memory of ??? object
  7285.  D0h    BYTE    ??? flag
  7286.  D1h    WORD    offset in common memory of default notify window for task
  7287.           or 0000h if none
  7288.  D3h  4 BYTEs    ???
  7289.  D7h    BYTE    window number on Switch Window menu
  7290.  D8h  5 BYTEs    ???
  7291.  DDh    WORD    offset in common memory of ??? object
  7292.  DFh  2 BYTEs    ???
  7293.  E1h    WORD    API level for task
  7294.  E3h    WORD    If status at B6h=waiting, offset in common memory of object
  7295.           that task is waiting on, else 0000h. (Task with CPU also
  7296.           has 0000h here)
  7297.  E9h    WORD    segment of ???
  7298.  EBh 4    BYTEs    ???
  7299.  EFh    WORD    EMS handle of virtualization buffer, 0 if no virtualization
  7300.  F3h 12 BYTEs    ???
  7301.  FDh    WORD    ???
  7302.  FFh    BYTE    ???
  7303. 101h  8 BYTEs    ???
  7304. 109h    DWORD    pointer to process record in system memory
  7305. 10Dh 14 BYTEs  ???
  7306. 11Bh    DWORD    SS:SP for ???
  7307. 11Fh  4 BYTEs    ???
  7308. 123h    DWORD    pointer to ???
  7309. 127h 25 BYTEs    ???
  7310. 140h    DWORD    pointer to ??? in system memory
  7311. 144h    DWORD    pointer to first task instance data record in system memory
  7312. 148h    DWORD    pointer to last task instance data record in system memory
  7313.         (from INT 15/AX=DE27h) (see #0324)
  7314. 14Ch    BYTE    ???
  7315. 14Eh 42 BYTEs    task's default keyboard object
  7316. 179h 32 BYTEs    task's ObjectQ object
  7317. 199h 41 BYTEs    task's default mailbox object
  7318. 1C2h 24 BYTEs    first register save record
  7319. 452h    --    default top of private stack
  7320.  
  7321. Format of DESQview Register Save Record:
  7322. Offset    Size    Description    (Table 0319)
  7323.  00h    WORD    AX
  7324.  02h    WORD    BX
  7325.  04h    WORD    CX
  7326.  06h    WORD    DX
  7327.  08h    WORD    DI
  7328.  0Ah    WORD    SI
  7329.  0Eh    WORD    DS
  7330.  10h    WORD    ES
  7331.  12h    DWORD    return address
  7332.  16h    WORD    original flags
  7333.  
  7334. Format of DESQview mapping context record:
  7335. Offset    Size    Description    (Table 0320)
  7336.  00h    WORD    lowest segment in process's memory
  7337.         (often start of system memory chain)
  7338.  02h    WORD    size of process's memory in paragraphs
  7339.  04h    BYTE    flag: 00h if process swapped out, 01h otherwise
  7340.  05h    BYTE    flag: 00h if allocated in conventional memory, 01h if EMS
  7341.  06h  2 BYTEs    ???
  7342.  08h    WORD    EMS handle if in EMS, else 0
  7343.  0Ah  2 BYTEs    ??? (nonzero if system memory resides in shared mem???)
  7344.  0Ch    WORD    segment of system memory block that contains process record,
  7345.           referenced from segment of start of system memory chain
  7346.  0Eh    BYTE    ???
  7347.  0Fh    WORD    size of system memory block that contains process record
  7348.           and DOS memory in paragraphs
  7349.  11h    BYTE    bit flags
  7350.         Bit 0: Swapped out???
  7351.         Bit 1: ???
  7352.         Bit 2: Swapped out???
  7353.  12h    BYTE    ???
  7354.  13h    BYTE    reference count
  7355.  ---v2.31
  7356.  14h 10 BYTEs    ???
  7357.  1Eh    WORD    segment of process record
  7358.  20h  2 BYTEs    ???
  7359.  22h    WORD    segment of ???    (in first free system memory block???)
  7360.  24h    WORD    segment of end of system memory chain
  7361.  26h    WORD    segment of start of system memory chain
  7362.  28h  8 BYTEs    ???
  7363.  2Ah    DWORD    pointer to ??? (process record???)
  7364.  2Dh 10 BYTEs    ???
  7365.  37h    BYTE    lowest interrupt vector to save on context switch
  7366.  38h    BYTE    highest interrupt vector to save on context switch
  7367.  39h    WORD    offset in common memory of main task with this context
  7368.  3Ah 12 BYTEs    ???
  7369.  46h    BYTE    internal mapping context number
  7370.  47h 12 BYTEs    ???
  7371.  ---v2.5x-2.60
  7372.  14h  6 BYTEs    ???
  7373.  1Ah    WORD    segment of process record
  7374.  1Ch  2 BYTEs    ???
  7375.  1Eh    WORD    segment of first free system memory block
  7376.  20h    WORD    segment of start of system memory chain
  7377.  22h    WORD    segment of end of system memory chain
  7378.  24h 8    BYTEs    ???
  7379.  2Ch    DWORD    pointer to ??? (1 segment into process record???)
  7380.  30h 3    BYTEs    ???
  7381.  33h    WORD    Offset in common memory of main task with this context
  7382.  35h 7    BYTEs    ???
  7383.  3Ch    BYTE    internal mapping context number
  7384.  3Dh 14 BYTEs    ???
  7385.  4Bh    WORD    first DOS memory segment (first MCB segment+1)
  7386.  4Dh    BYTE    ??? (flag???)
  7387.  ---v2.53 (2.5x???)
  7388.  4Eh 12 BYTEs    ???
  7389.  ---v2.60
  7390.  4Eh    WORD    segment of script buffer (see #0325)
  7391.  50h  6 BYTEs    ???
  7392.  
  7393. Format of DESQview Internal Window Record (v2.31-2.60):
  7394. Offset    Size    Description    (Table 0321)
  7395.  00h    BYTE    internal window number???
  7396.  01h    BYTE    display page???
  7397.  02h    BYTE    video mode
  7398.  03h  3 BYTEs    ???
  7399.  06h    BYTE    logical window height
  7400.  07h    BYTE    logical window width
  7401.  08h    DWORD    pointer to text video buffer
  7402.  0Ch 116 BYTEs    ???
  7403.  
  7404. Format of DESQview process record (v2.31):
  7405. Offset    Size    Description    (Table 0322)
  7406. -470h 13 BYTEs    filename of ??? Script
  7407. -463h 1117 BYTEs ??? (script buffer???)
  7408.  -6h  6 BYTEs    ???
  7409.  00h    WORD    segment of parent PSP in process
  7410.  02h  5 BYTEs    ???
  7411.  07h    WORD    segment of current PSP in process
  7412.  09h    WORD    segment of first MCB in process
  7413.  0Bh 13 BYTEs    ???
  7414.  18h 1024 BYTEs process's interrupt vector table
  7415. 418h 376 BYTEs    ???
  7416. 590h        first MCB in process
  7417. SeeAlso: #0323
  7418.  
  7419. Format of DESQview process record (v2.52-v2.60) (probably also 2.5x):
  7420. Offset    Size    Description    (Table 0323)
  7421.  00h 28 BYTEs    EXE header of last EXE, ??? if last program run was COM
  7422.  1Ch ??? BYTEs    overwritten with ASCIZ filename of last program run (EXE/COM)
  7423. 11Ch    WORD    segment of parent PSP in process
  7424. 11Eh  4 BYTEs    ???
  7425. 122h    WORD    segment of current PSP
  7426. 124h    WORD    segment of current PSP
  7427. 126h    WORD    segment of first MCB in process
  7428. 128h  4 BYTEs    ???
  7429. 12Ch    DWORD    pointer to first process instance data record in system memory
  7430. 130h    DWORD    pointer to last process instance data record in system memory
  7431.         (from INT 15/AX=DE27h) (see #0324)
  7432. 134h  8 BYTEs    ???
  7433. 13Ch    WORD    size of current environment
  7434. 13Eh    WORD    segment of current environment
  7435. 140h    WORD    segment of current PSP
  7436. 142h    DWORD    entry point of current program
  7437. 146h 10 BYTEs    ???
  7438. ---v2.52 (v2.5x???)
  7439. 150h    BYTE    ???
  7440. 151h    WORD    segment of parent PSP in process
  7441. 153h    WORD    ???
  7442. 155h    WORD    ???
  7443. 157h    WORD    ???
  7444. 159h  4 BYTEs    ???
  7445. 15Dh    WORD    segment of current environment
  7446. 15Fh    WORD    segment of current PSP
  7447. 161h    WORD    segment of ???
  7448. 162h    WORD    ???
  7449. 164h  3 BYTEs    ???
  7450. 168h 1024 BYTEs process's interrupt vector table
  7451. 568h 120 BYTEs    ???
  7452. 5E0h        first MCB in process
  7453. ---v2.60
  7454. 150h    WORD    segment of parent PSP in process
  7455. 152h    WORD    ???
  7456. 154h    WORD    ???
  7457. 156h    WORD    ???
  7458. 158h  4 BYTEs    ???
  7459. 15Ch    WORD    segment of current environment
  7460. 15Eh    WORD    segment of current PSP
  7461. 160h    WORD    segment of ???
  7462. 162h    WORD    ???
  7463. 164h 1024 BYTEs process's interrupt vector table
  7464. 564h 108 BYTEs    ???
  7465. 5D0h        first MCB in process
  7466. SeeAlso: #0322
  7467.  
  7468. Format of DESQview task or process instance data record (v2.5x???, v2.60):
  7469. Offset    Size    Description    (Table 0324)
  7470.  00h    DWORD    pointer to next record of same type or 00000000
  7471.  04h    DWORD    pointer to previous record of same type or 00000000
  7472.  08h    DWORD    pointer to source area of memory during restore state
  7473.  0Ch    WORD    number of bytes to save/restore
  7474.  0Eh    DWORD    pointer to destination area of memory during restore state
  7475.  12h    WORD    ??? (0)
  7476.  14h  N BYTEs    source memory buffer during restore state
  7477.  
  7478. Format of DESQview script buffer (v2.60):
  7479. Offset    Size    Description    (Table 0325)
  7480.  00h 13 BYTEs    ASCIZ Script filename
  7481.  0Dh 80 BYTEs    ???
  7482.  5Eh  N BYTEs    script records (see #0326)
  7483.  
  7484. Format of one DESQview script record (v2.60):
  7485. Offset    Size    Description    (Table 0326)
  7486.  00h    BYTE    signature 12h
  7487.  01h 18 BYTEs    blank-padded script name
  7488.  13h    BYTE    ASCII code of key attached to script or 0 if non-ASCII key
  7489.  14h    BYTE    scan code of key attached to script if non-ASCII, else 0
  7490.  15h    BYTE    ???
  7491.  16h    WORD    size of script in bytes
  7492.  18h  N    BYTEs    script (ASCII code of each keystroke; if 0, next byte is
  7493.           scan code of non-ASCII key)
  7494. SeeAlso: #0325
  7495.  
  7496. Format of DESQview Common Memory Header (v2.31-2.60):
  7497. Offset    Size    Description    (Table 0327)
  7498.  00h    WORD    offset of lowest used block
  7499.  02h    WORD    bytes of commom memory, including header
  7500.  04h    WORD    offset of first free block
  7501.  06h  N BYTEs    size depends of DV version, ??? (DVP buffer???)
  7502. Note:    the above is located at the beginning of the commom memory segment
  7503. SeeAlso: #0328,#0329,#0337
  7504.  
  7505. Format of DESQview Free block header:
  7506. Offset    Size    Description    (Table 0328)
  7507.  00h    WORD    size of block in bytes including header
  7508.  02h    WORD    offset of next free block
  7509.  04h  N BYTEs    free block
  7510. SeeAlso: #0327,#0329
  7511.  
  7512. Format of DESQview Used block header:
  7513. Offset    Size    Description    (Table 0329)
  7514.  00h    WORD    size of block in bytes including header
  7515.  02h  N BYTEs    used block
  7516. SeeAlso: #0327,#0328
  7517. --------Q-151017-----------------------------
  7518. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  7519.     AX = 1017h
  7520. Return: pops up "Programming error" window in DV 2.x
  7521. --------Q-151018-----------------------------
  7522. INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION
  7523.     AX = 1018h
  7524.     BH = column
  7525.     BL = row
  7526.     ES = segment of object handle for window below which to search
  7527.          0000h = start search with topmost window
  7528. Return: ES = segment of object handle for window which is visible at the
  7529.            indicated position, or covered by indicated window
  7530.         0000h if no window
  7531. SeeAlso: AX=1023h,AX=1024h
  7532. --------Q-151019-----------------------------
  7533. INT 15 - TopView - "SOUND" - MAKE TONE
  7534.     AX = 1019h
  7535.     BX = frequency in Hertz (0000h = silence)
  7536.     CX = duration in clock ticks (18.2 ticks/sec)
  7537. Return: immediately, tone continues to completion
  7538. Notes:    if another tone is already playing, the new tone does not start until
  7539.       completion of the previous one.  Up to 32 tones may be queued before
  7540.       the process is blocked until a note completes.
  7541.     in DV 2.00, the lowest tone allowed is 20 Hz
  7542.     if CX = 0, the current note is cancelled; if BX = 0 as well, all queued
  7543.       notes are also cancelled
  7544. SeeAlso: AH=82h"HUNTER",INT 16/AH=73h
  7545. --------Q-15101A-----------------------------
  7546. INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK
  7547.     AX = 101Ah
  7548. Return: stack switched
  7549. Notes:    this call may not be nested; a second call must be preceded by a call
  7550.       to "USTACK" (AX=1025h)
  7551.     while TopView requires many API calls to be executed while on the
  7552.       task's internal stack, DESQview allows those calls to be executed
  7553.       regardless of the current stack
  7554. SeeAlso: AX=1025h
  7555. --------Q-15101B-----------------------------
  7556. INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION
  7557.     AX = 101Bh
  7558. Return: task-switching temporarily disabled
  7559. Notes:    will not task-switch until "ENDC" (AX = 101Ch) called unless task
  7560.       voluntarily releases the CPU (upon regaining the CPU, task-switching
  7561.       will again be disabled)
  7562.     suspends the caller until DOS is free
  7563. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h
  7564. SeeAlso: INT 60/DI=0602h
  7565. --------Q-15101C-----------------------------
  7566. INT 15 - TopView - "ENDC" - END CRITICAL REGION
  7567.     AX = 101Ch
  7568. Return: task-switching enabled
  7569. Note:    this API call may be made from within a hardware interrupt handler
  7570. SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h,INT 60/DI=0603h
  7571. --------Q-15101D-----------------------------
  7572. INT 15 - TopView - "STOP" - STOP TASK
  7573.     AX = 101Dh
  7574.     ES = segment of object handle for task to be stopped
  7575.          (== handle of main window for that task)
  7576. Return: indicated task will not get any CPU time until restarted with AX=101Eh
  7577. Note:    once a task has been stopped, additional "STOP"s are ignored
  7578. BUG:    in DV 2.00, this function is ignored unless the indicated task is the
  7579.       current task
  7580. SeeAlso: AX=101Eh,AX=102Bh,AH=12h"VMiX",INT 21/AH=81h
  7581. --------Q-15101E-----------------------------
  7582. INT 15 - TopView - "START" - START TASK
  7583.     AX = 101Eh
  7584.     ES = segment of object handle for task to be started
  7585.          (== handle of main window for that task)
  7586. Return: indicated task is started up again
  7587. Note:    once a task has been started, additional "START"s are ignored
  7588. SeeAlso: AX=101Dh,AX=102Bh,INT 21/AH=82h
  7589. --------Q-15101F-----------------------------
  7590. INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW
  7591.     AX = 101Fh
  7592.     BX = bit fields
  7593.          bits 0-12: number of characters to display
  7594.          bits 13,14: which mouse button may be pressed to remove window
  7595.              00 = either
  7596.              01 = left
  7597.              10 = right
  7598.              11 = either
  7599.          bit 15: beep if 1
  7600.     ES:DI -> text of message
  7601.     CH = width of error window (0 = default)
  7602.     CL = height of error window (0 = default)
  7603.     DX = segment of object handle
  7604. Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed
  7605. Note:    window remains on-screen until ESC or indicated mouse button is pressed
  7606. --------Q-151020-----------------------------
  7607. INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+
  7608.     AX = 1020h
  7609. Return: pops up "Programming error" window in DV v2.00+
  7610. --------Q-151021-----------------------------
  7611. INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK
  7612.     AX = 1021h
  7613.     BX = segment of object handle for task to interrupt (not self)
  7614.     DX:CX -> FAR routine to jump to next time task is run
  7615. Return: nothing
  7616. Notes:    the FAR routine is entered with the current ES, DS, SI, DI, and BP
  7617.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  7618.       needs to be preserved
  7619.     multiple PGMINTs to a single task are processed last-in first-out
  7620.     if the other task is in a DOS or DV API call, the interruption will
  7621.       occur on return from that call
  7622. --------Q-151022BX0000-----------------------
  7623. INT 15 - TopView - "GETVER" - GET VERSION
  7624.     AX = 1022h
  7625.     BX = 0000h
  7626. Return: BX nonzero, TopView or compatible loaded
  7627.     (BL = major version, BH = minor version)
  7628. Notes:    TaskView returns BX = 0001h, DESQview v2.00+ returns BX = 0A01h
  7629. --------Q-151023-----------------------------
  7630. INT 15 - TopView - "POSWIN" - POSITION WINDOW
  7631.     AX = 1023h
  7632.     BX = segment of object handle for parent window within which to
  7633.            position the window (0 = full screen)
  7634.     ES = segment of object handle for window to be positioned
  7635.     DL = general window position (see #0330)
  7636.     CH = number of columns to offset from position specified by DL
  7637.     CL = number of rows to offset from position specified by DL
  7638. Return: nothing
  7639.  
  7640. Bitfields for TopView general window position:
  7641. Bit(s)    Description    (Table 0330)
  7642.  0,1    horizontal position
  7643.     00 = current, 01 = center, 10 = left, 11 = right
  7644.  2,3    vertical position
  7645.     00 = current, 01 = center, 10 = top, 11 = bottom
  7646.  4    don't redraw screen if set
  7647.  5-7    not used
  7648. --------Q-151024-----------------------------
  7649. INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO
  7650.     AX = 1024h
  7651.     BX = segment of object handle for window
  7652.           (0 = use default)
  7653. Return: ES:DI -> virtual screen
  7654.     CX = size of virtual screen in bytes
  7655.     DL = 00h text screen
  7656.          01h graphics screen
  7657. SeeAlso: INT 10/AH=FEh,INT 21/AH=2Bh/CX=4445h
  7658. --------Q-151025-----------------------------
  7659. INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK
  7660.     AX = 1025h
  7661. Return: stack switched back
  7662. Notes:    call only after having switched to internal stack with AX=101Ah
  7663.     while TopView requires many API calls to be executed while on the
  7664.       task's private stack, DESQview allows those calls to be executed
  7665.       regardless of the current stack
  7666. SeeAlso: AX=101Ah
  7667. --------Q-1510-------------------------------
  7668. INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
  7669.     AH = 10h
  7670.     AL = 26h thru 2Ah
  7671. Return: pops up "Programming error" window in DV 2.x
  7672. --------Q-15102B-----------------------------
  7673. INT 15 - DESQview v2.00+ (TopView???) - "POSTTASK" - AWAKEN TASK
  7674.     AX = 102Bh
  7675.     BX = segment of object handle for task
  7676. Return: nothing
  7677. Note:    forces a task which is waiting on its objectq to continue by placing
  7678.       the handle for the task on the objectq
  7679. SeeAlso: AX=101Dh,AX=101Eh,INT 21/AH=82h
  7680. --------Q-15102C-----------------------------
  7681. INT 15 - DESQview v2.00+ - "NEWPROC" - START NEW APPLICATION IN NEW PROCESS
  7682.     AX = 102Ch
  7683.     ES:DI -> contents of .PIF/.DVP file (see #0331)
  7684.     BX = size of .PIF/.DVP info
  7685. Return: BX = segment of object handle for new task
  7686.          0000h on error
  7687. SeeAlso: AX=DE24h,INT 21/AH=4Bh
  7688.  
  7689. Format of .PIF/.DVP file:
  7690. Offset    Size    Description    (Table 0331)
  7691.  00h    BYTE    reserved (0)
  7692.  01h    BYTE    checksum of bytes 02h through 170h
  7693.  02h 30 BYTEs    blank-padded program title
  7694.  20h    WORD    maximum memory to allocate to partition in KB
  7695.  22h    WORD    minimum memory required in KB
  7696.  24h 64 BYTEs    ASCIZ program pathname
  7697.  64h    BYTE    default drive letter ('A',...)
  7698.  65h 64 BYTEs    ASCIZ default directory name
  7699.  A5h 64 BYTEs    ASCIZ program parameters
  7700.  E5h    BYTE    initial screen mode (0-7) (also see offset 189h)
  7701.  E6h    BYTE    number of text pages used
  7702.  E7h    BYTE    number of first interrupt to save
  7703.  E8h    BYTE    number of last interrupt to save
  7704.  E9h    BYTE    rows in virtual screen buffer
  7705.  EAh    BYTE    columns in virtual screen buffer
  7706.  EBh    BYTE    initial window position, row
  7707.  ECh    BYTE    initial window position, column
  7708.  EDh    WORD    system memory in KB
  7709.  EFh 64 BYTEs    ASCIZ shared program name
  7710. 12Fh 64 BYTEs    ASCIZ shared program data file
  7711. 16Fh    BYTE    program flags 1 (see #0332)
  7712. 170h    BYTE    flags2
  7713.         bit 6: uses command-line parameters in field at A5h
  7714.         bit 5: swaps interrupt vectors
  7715. ---information unique to .DVP files---
  7716. 171h  2 BYTEs    keys to use on open menu
  7717. 173h    WORD    size of script buffer in bytes
  7718. 175h    WORD    automatically give up CPU after this many tests for keyboard
  7719.           input in one clock tick (default 0 = never)
  7720. 177h    BYTE    nonzero = "uses own colors"
  7721. 178h    BYTE    nonzero if application swappable
  7722. 179h  3 BYTEs    reserved (0) according to Quarterdeck documentation
  7723.         in actual .DVP files, frequently 01h
  7724. 17Ch    BYTE    nonzero to automatically close on exit (see also #0334)
  7725. 17Dh    BYTE    nonzero if copy-protect floppy is required
  7726. ---information unique to DESQview 2.0+---
  7727. 17Eh    BYTE    .DVP version number
  7728.         00h DESQview v1.2+
  7729.         01h DESQview v2.0+
  7730.         02h DESQview v2.2+
  7731. 17Fh    BYTE    reserved (0)
  7732. 180h    BYTE    initial number of rows in physical window
  7733. 181h    BYTE    initial number of columns in physical window
  7734. 182h    WORD    maximum expanded memory to allow, in KB
  7735. 184h    BYTE    DVP program flags 3 (see #0333)
  7736. 185h    BYTE    keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+)
  7737.         (see #0335)
  7738. 186h    BYTE    number of graphics pages used
  7739. 187h    WORD    extra system memory size
  7740. 189h    BYTE    initial screen mode (FFh = default) (overrides offset E5h)
  7741. ---information unique to DESQview 2.2+---
  7742. 18Ah    BYTE    serial port usage
  7743.         FFh uses all serial ports
  7744.         00h no serial ports
  7745.         01h only COM1
  7746.         02h only COM2
  7747. 18Bh    BYTE    DVP program flags 4 (see #0334)
  7748. 18Ch    BYTE    protection level for 386 machines
  7749. 18Dh 19 BYTEs    reserved (0) for regular DESQview
  7750. ---information unique to DESQview/X 1.0---
  7751. 18Dh    BYTE    X flags
  7752.         bits 3-7: unused (0)
  7753.         bit 2: don't display wait message when opening window
  7754.         bit 1: don't display DOS window
  7755.         bit 0: (XNEWPROC) use DOS client layer (DOS-to-X)
  7756.                (NEWPROC) inherit DOS client layer usage
  7757. 18Eh    BYTE    X keyboard behavior (0-3)
  7758. 18Fh    BYTE    font scaling
  7759.         00h fixed fonts
  7760.         01h scalable fonts
  7761. 190h 10 BYTEs    reserved (0)
  7762. 19Ah    WORD    length of data follownig XDVP signature
  7763. 19Ch  4 BYTEs    signature "XDVP"
  7764. 1A0h  N BYTEs    list of variable length records (see #0336)
  7765.  
  7766. Bitfields for .PIF/.DVP program flags 1:
  7767. Bit(s)    Description    (Table 0332)
  7768.  7    writes text directly to screen
  7769.  6    runs in foreground only (see also #0331 offset 184h)
  7770.  5    uses math coprocessor
  7771.  4    accesses system keyboard buffer directly
  7772.  3-1    reserved (0)
  7773.  0    swappable
  7774. SeeAlso: #0331,#0333,#0334
  7775.  
  7776. Bitfields for .DVP program flags 3:
  7777. Bit(s)    Description    (Table 0333)
  7778.  7    automatically assign window position
  7779.  5    maximum memory value has been specified
  7780.  4    disallow "Close" command
  7781.  3    foreground-only when doing graphics
  7782.     set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  7783.  2    don't virtualize (see also #0334)
  7784.  1    foreground-only during DOS calls
  7785.     set by DV 2.3+ when "Runs in Background" = "D" (undoc)
  7786. SeeAlso: #0331,#0332,#0334
  7787.  
  7788. Bitfields for .DVP program flags 4:
  7789. Bit(s)    Description    (Table 0334)
  7790.  7    automatically close application on exit if .COM or .EXE    specified
  7791.     (see also #0331 offset 17Ch)
  7792.  6    swappable if not using serial ports
  7793.  5    start program with window hidden (v2.26+)
  7794.  4    start program in background (v2.26+)
  7795.  3    virtualize text (see also #0333)
  7796.  2    virtualize graphics (see also #0333)
  7797.  1    share CPU when foreground
  7798.  0    share EGA when foreground and zoomed
  7799. SeeAlso: #0331,#0332,#0333
  7800.  
  7801. Bitfields for DESQview keyboard conflict level:
  7802. Bit(s)    Description    (Table 0335)
  7803.  3    save/restore entire INT 09 handler state every taskswtch
  7804.  2    take special precautions for programs which read the BIOS keyboard
  7805.       buffer directly from memory
  7806.  1    never indicate keystroke available during scripts/xfers
  7807.  0    only indicate keystroke available every sixth poll
  7808. SeeAlso: #0331
  7809.  
  7810. Format of DESQview/X variable length record:
  7811. Offset    Size    Description    (Table 0336)
  7812.  00h    WORD    length of following record, 0000h if end of record list
  7813.  02h    BYTE    record type
  7814.         01h script filename, up to 64 characters
  7815.         02h command-line parameters (allows >64 characters on cmdline)
  7816.         03h environment inheritance
  7817.         04h environment string
  7818.         05h starting window position
  7819. ---types 01h,02h,04h---
  7820.  03h  N BYTEs    ASCII data
  7821. ---type 03h---
  7822.  03h    BYTE    inheritance
  7823.         00h do not inherit
  7824.         01h inherit environment
  7825. ---type 05h---
  7826.  03h  N BYTEs    ASCII copy of fields as typed into DVPMAN, separated by commas:
  7827.         starting row, starting column, starting height, starting width
  7828. Note:    if there are multiple occurrences of record types 01h, 02h, or 03h,
  7829.       only the last instance of each type is used; multiple occurrences of
  7830.       type 04h are concatenated
  7831. SeeAlso: #0331
  7832. --------Q-15102D-----------------------------
  7833. INT 15 - DESQview v2.00+ - "KMOUSE" - KEYBOARD MOUSE CONTROL
  7834.     AX = 102Dh
  7835.     BL = subfunction
  7836.          00h determine whether using keyboard mouse
  7837.         Return: BL = 00h using real mouse
  7838.                  01h using keyboard mouse
  7839.          01h turn keyboard mouse on
  7840.          02h turn keyboard mouse off
  7841. --------Q-15102E-----------------------------
  7842. INT 15 - DESQview v2.40+ - ALLOCATE SYSTEM MEMORY
  7843.     AX = 102Eh
  7844.     BX = number of bytes
  7845. Return: AX = status
  7846.         0000h successful
  7847.         ES:DI -> allocated system memory (see #0337)
  7848.         0001h failed
  7849.         ES:DI = 0000h:0000h
  7850. Note:    under DV 2.42, this call is identical to AX=1001h
  7851. SeeAlso: AX=1001h,AX=1002h,AX=DE0Ch
  7852.  
  7853. Format of DESQview system memory block header:
  7854. Offset    Size    Description    (Table 0337)
  7855.  00h    WORD    segment of next header or 0000h
  7856.  02h    WORD    segment of previous header or 0000h
  7857.  04h    WORD    size of block in paragraphs, including header
  7858.  06h    BYTE    availability flag (00h in use, 01h free)
  7859. Note:    this header is located one paragraph before the memory block proper
  7860. SeeAlso: #0327
  7861. --------Q-1511-------------------------------
  7862. INT 15 - TopView commands
  7863.     AH = 11h
  7864.     AL = various (except 17h)
  7865. Return: varies by function
  7866. Note:    in DESQview 2.x, these function calls are identical to AH=DEh, so
  7867.       see those below
  7868. SeeAlso: AX=DE00h,AX=DE22h,AX=DE30h
  7869. --------T-1511-------------------------------
  7870. INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
  7871.     AH = 11h
  7872.     STACK:    DWORD    pointer to ASCIZ string containing a VMiX shell
  7873.             request (max len = 127)
  7874. Return: AX = status (SYS_OK or SYS_ERROR)
  7875. SeeAlso: AH=0Ch"VMiX"
  7876. --------T-1511-------------------------------
  7877. INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
  7878.     AH = 11h
  7879. Note:    disables the Alt-Z MultiDOS command/program-selection hotkey
  7880. SeeAlso: AH=12h"MultiDOS"
  7881. Index:    hotkeys;MultiDOS Plus
  7882. --------Q-151117BX0000-----------------------
  7883. INT 15 - DESQview v2.20+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  7884.     AX = 1117h
  7885.     BX = 0000h    get current mapping context without setting
  7886.          nonzero    set new mapping context
  7887. Return: BX = mapping context in effect before call
  7888.     interrupts enabled
  7889. Notes:    this function differs from AX = DE17h for DESQview v2.20 through 2.25
  7890.     mapping contexts determine conventional-memory addressability; setting
  7891.       a mapping context ensures that the associated program and data areas
  7892.       are in memory for access.  Usable by drivers, TSRs and shared
  7893.       programs.
  7894.     caller need not be running under DESQview, but must ensure that the
  7895.       stack in use will not be mapped out by the call
  7896. SeeAlso: AX=DE17h,INT 2F/AX=1685h
  7897. --------m-1511DE-----------------------------
  7898. INT 15 - DESQview - QEXT.SYS - INSTALLATION CHECK
  7899.     AX = 11DEh
  7900. Return: CF clear if installed
  7901.         AX = segment at which QEXT.SYS is located
  7902. Desc:    QEXT.SYS is Quarterdeck's HMA manager for DESQview; more recent
  7903.       versions also implement the XMS standard
  7904. Note:    a private entry point (see #0338) may be found by searching the
  7905.       beginning of the returned segment for the signature string
  7906.       "QUARTERDECK EXTENDED MEMORY MANAGER 286"; the word immediately
  7907.       prior to the signature contains the QEXT version number in BCD,
  7908.       and the word prior to that contains the offset within the QEXT
  7909.       code segment of the private entry point
  7910. SeeAlso: INT 2F/AX=4310h,INT 67/AH=3Fh
  7911.  
  7912. (Table 0338)
  7913. Call QEXT.SYS private entry point with:
  7914.     AH = 00h ???
  7915.     AH = nonzero ???
  7916. --------T-1512-------------------------------
  7917. INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
  7918.     AH = 12h
  7919.     STACK:    WORD    process ID
  7920. Return: AX = status (SYS_OK or SYS_ERROR)
  7921. SeeAlso: AH=03h"MultiDOS",AX=101Dh,AH=13h"VMiX"
  7922. --------T-1512-------------------------------
  7923. INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
  7924.     AH = 12h
  7925. Note:    enables the Alt-Z MultiDOS command/program-selection hotkey
  7926. SeeAlso: AH=11h"MultiDOS"
  7927. Index:    hotkeys;MultiDOS Plus
  7928. --------Q-1512--BH00-------------------------
  7929. INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE
  7930.     AH = 12h
  7931.     BH = 00h
  7932.     BL = which handle to return
  7933.         00h handle in DWORD on top of stack
  7934.         01h current task's window handle
  7935.         02h given task's mailbox handle (task's handle on stack)
  7936.         03h current task's mailbox handle
  7937.         04h given task's keyboard handle (task's handle on stack)
  7938.         05h current task's keyboard object handle
  7939.         06h given task's OBJECTQ handle (task's handle on stack)
  7940.         07h current task's OBJECTQ handle
  7941.         08h      \
  7942.           thru > return 0000:0000 under DV < 2.26
  7943.         10h      /
  7944.         0Ch (2.26+) task owning object with handle in DWORD on top of stack
  7945.         0Dh (2.26+) task handle of owner (parent) of current task
  7946. Return: DWORD on top of stack is object handle
  7947. Note:    BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard,
  7948.       mailbox, panel, pointer, and timer objects) or is an orphan (task,
  7949.       window)
  7950. SeeAlso: AH=12h/BH=02h,AH=12h/BH=80h
  7951. --------Q-1512--BH01-------------------------
  7952. INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT
  7953.     AH = 12h
  7954.     BH = 01h
  7955.     BL = object type to create (see #0339)
  7956.     STACK: (only if window object or WINDOW class)
  7957.            DWORD address to jump to (no new task if high word == 0)
  7958.            DWORD (reserved) 0 = non-task window, FFFFh = task window
  7959.            DWORD bytes for task's private stack (FFFFh == default of 0100h)
  7960.            DWORD bytes system memory for input buffer for READ/READN
  7961.             (0 == none, -1 == default--same as logical window size)
  7962.            DWORD window size, columns
  7963.            DWORD window size, rows
  7964.            DWORD length of window title
  7965.            DWORD address of window title
  7966. Return: DWORD on top of stack is new object handle
  7967. Notes:    if a new task is created, it is started with
  7968.       AX = BX = SI = DI = BP = 0
  7969.       DX:CX = handle of parent task
  7970.       DS = ES = SS = segment of private stack (and new task's handle)
  7971.     new windows are orphans, inherit the colors/hidden status of the
  7972.       creating task's window, and are placed in the upper left hand corner
  7973.       of the screen but not automatically redrawn
  7974.     new keyboards are closed, and have all object bits cleared except for
  7975.       the hardware cursor bit
  7976. SeeAlso: AH=12h/BH=02h,AH=12h/BH=81h
  7977.  
  7978. (Table 0339)
  7979. Values for TopView/DESQview object type (for creation):
  7980.  00h    (DV 2.0x only) handle is DWORD on top of stack
  7981.  01h    (DV 2.0x only) use task's window handle
  7982.  02h    (DV 2.0x only) given task's mailbox (task's handle on stack)
  7983.  03h    (DV 2.0x only) current task's mailbox
  7984.  04h    (DV 2.0x only) given task's keyboard (task's handle on stack)
  7985.  05h    (DV 2.0x only) current task's keyboard object
  7986.  08h    WINDOW class
  7987.  09h    MAILBOX class
  7988.  0Ah    KEYBOARD class
  7989.  0Bh    TIMER object (counts down 32-bit time in 10ms increments)
  7990.  0Fh    POINTER object
  7991.  10h    PANEL object
  7992. --------Q-1512--BH02-------------------------
  7993. INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT
  7994.     AH = 12h
  7995.     BH = 02h
  7996.     BL = object
  7997.         00h handle in DWORD on top of stack
  7998.         window: close window and free
  7999.         timer: free timer
  8000.         panel: free panel object
  8001.         pointer: free pointer
  8002.         01h task's window handle - kills task, never returns
  8003.         02h given task's mailbox (task's handle on top of stack)
  8004.         03h current task's mailbox
  8005.         04h given task's keyboard (task's handle on top of stack)
  8006.         05h current task's keyboard object
  8007. Return: STACK popped if handle passed on stack
  8008. Notes:    when a window is freed, its keyboard and pointer objects are freed;
  8009.       task windows also free any mailbox, objectq, and panel objects held
  8010.       by the task and any child tasks
  8011.     if the keyboard being freed is the default keyboard for a task, this
  8012.       call is equivalent to CLOSE
  8013.     panel and pointer objects are automatically closed if open
  8014. SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh,AH=12h/BH=82h
  8015. --------Q-1512--BH03-------------------------
  8016. INT 15 - TopView - SEND MESSAGE - "ADDR" - GET HANDLE OF MESSAGE SENDER
  8017.     AH = 12h
  8018.     BH = 03h
  8019.     BL = object
  8020.         00h mailbox handle in DWORD on top of stack
  8021.         02h sender of last msg read from mailbox (task's handle on stack)
  8022.         03h sender of last msg read from current task's mailbox
  8023. Return: DWORD on stack is task handle of message sender
  8024. SeeAlso: AH=12h/BH=00h,AH=12h/BH=83h
  8025. --------Q-1512--BH03-------------------------
  8026. INT 15 - DESQview v2.26+ - "CONNECT" - CONNECT TWO WINDOWS
  8027.     AH = 12h
  8028.     BH = 03h
  8029.     BL = window to be connected
  8030.         00h handle of window to be attached in DWORD on top of stack
  8031.         01h attach current task's main window
  8032.     STACK: DWORD handle of window to attach to or 00000000h to detach
  8033. Return: STACK popped
  8034. Notes:    when two windows are connected, both will move if the user moves either
  8035.     multiple windows may be attached to a single window, but each window
  8036.       may only be attached to one window at a time
  8037. SeeAlso: AH=12h/BH=83h
  8038. --------Q-1512--BX0300-----------------------
  8039. INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY
  8040.     AH = 12h
  8041.     BX = 0300h
  8042.     STACK: DWORD handle of panel object (see #0340)
  8043. Return: STACK: DWORD length of directory (always multiple of 14 bytes)
  8044.            DWORD address of directory
  8045. Note:    a null string is returned if the object is not open
  8046. SeeAlso: AH=12h/BX=0400h"APPLY",AH=12h/BH=83h
  8047.  
  8048. Format of TopView panel file:
  8049. Offset    Size    Description    (Table 0340)
  8050.  00h  2 BYTEs    C0h C3h
  8051.  02h    BYTE    number of panels in file
  8052.  03h    for each panel in file:
  8053.         8 BYTEs  blank-padded panel name
  8054.           DWORD  panel offset in file
  8055.           WORD   panel length
  8056.     data for panels (each consists of one or more window/query/manager
  8057.       streams); first byte of each panel must be 1Bh, fifth byte must be
  8058.       E5h
  8059. --------Q-1512--BH04-------------------------
  8060. INT 15 - TopView - SEND MESSAGE - "READ" - READ NEXT LOGICAL LINE OF WINDOW
  8061.     AH = 12h
  8062.     BH = 04h
  8063.     BL = window to read from
  8064.         00h handle is DWORD on top of stack
  8065.         01h use calling task's default window
  8066.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  8067.         0Dh (DV 2.26+) default window of parent task of current task
  8068. Return: STACK:    DWORD number of bytes read
  8069.         DWORD address of buffer
  8070. Notes:    reading starts at the current logical cursor position; the cursor is
  8071.       updated to point at the character following the last one read
  8072.     any translucent blanks (FFh) which are visible on screen are changed
  8073.       to the character which is seen through them
  8074.     the string produced by the read is placed in an input buffer which may
  8075.       be reused by the next READ or READN of a window
  8076.     window stream opcodes D8h and D9h determine whether the read returns
  8077.       characters or attributes
  8078. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=12h,AH=12h/BH=84h
  8079. --------Q-1512--BH04-------------------------
  8080. INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT
  8081.     AH = 12h
  8082.     BH = 04h
  8083.     BL = object
  8084.         00h handle is DWORD on top of stack
  8085.         mailbox: wait for and get next message
  8086.         keyboard: wait for and get pointer to next input buffer
  8087.         pointer: wait for and get next message
  8088.         02h get next message from mailbox (task's handle on top of stack)
  8089.         03h get next message from current task's mailbox
  8090.         04h get the next input from keyboard (handle on top of stack)
  8091.         05h get the next input from task's default keyboard
  8092.         06h wait for input from any object in OBJECTQ (handle on stack)
  8093.         07h wait for input from any object in task's default OBJECTQ
  8094. Return: STACK: (if objectq) DWORD handle of object with input
  8095.            (otherwise)  DWORD number of bytes
  8096.                 DWORD address of pointer message (see #0341)
  8097. Notes:    for a keyboard in keystroke mode, the input buffer is a single byte
  8098.       containing the character code as returned by the BIOS; the BIOS scan
  8099.       code is available via the STATUS call if the character is zero
  8100.     for a keyboard in field mode, the input buffer format is determined
  8101.       by the field table header for the window the keyboard is attached to
  8102.     keyboard input buffers and mailbox message buffers may be invalidated
  8103.       by the next READ, ERASE, CLOSE, or FREE message to the same object
  8104. SeeAlso: AH=12h/BH=05h"OBJECT",AH=12h/BH=84h
  8105.  
  8106. Format of DESQview pointer message:
  8107. Offset    Size    Description    (Table 0341)
  8108.  00h    WORD    row
  8109.  02h    WORD    column
  8110.  04h    BYTE    status (see #0342)
  8111.  05h    BYTE    field number or zero (APILEVEL >= 2.00 only)
  8112.  
  8113. Bitfields for DESQview pointer status:
  8114. Bit(s)    Description    (Table 0342)
  8115.  7-2    number of clicks-1 if multiple-click mode active
  8116.  7    set when press/release mode active and button pressed
  8117.  6    set when press/release mode active and button released
  8118.  1-0    button pressed (00=none,01=button1,10=button2)
  8119. SeeAlso: #0341
  8120. --------Q-1512--BX0400-----------------------
  8121. INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE
  8122.     AH = 12h
  8123.     BX = 0400h
  8124.     STACK: DWORD timer's handle
  8125. Return: after timer expires
  8126.     STACK: DWORD time in 1/100 sec after midnight when timer expired
  8127. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=84h
  8128. --------Q-1512--BX0400-----------------------
  8129. INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW
  8130.     AH = 12h
  8131.     BX = 0400h
  8132.     STACK: DWORD handle of panel object
  8133.            DWORD window's handle (or 0 for current task's window)
  8134.            DWORD length of panel name
  8135.            DWORD pointer to panel name
  8136. Return: STACK: DWORD handle of window which was used
  8137.            DWORD handle of keyboard or 0
  8138. Notes:    status of APPLY may be checked with STATUS message
  8139.     panel MUST have the following format
  8140.       first byte must be 1Bh (i.e. must start with a stream)
  8141.       first opcode in stream must be E5h
  8142.         single byte arg of opcode is interpreted thus:
  8143.           bits 7,6    11 means create new window
  8144.             10 means create new field table for existing window
  8145.             01 means use existing window and field table
  8146.           bit 5 if set, panel contains a field table
  8147.             (creates a new keyboard and puts it in field mode)
  8148.           bit 4 if set, panel contains input fields
  8149.           bit 3 if set, panel contains select fields but no input fields
  8150.     if the panel contains input or select fields, a keyboard handle is
  8151.       returned; either the window's current open keyboard or a
  8152.       newly-created keyboard object.  The caller should read that keyboard
  8153.       to obtain input from the panel.
  8154. SeeAlso: AH=12h/BH=84h
  8155. --------Q-1512--BH05------------------------
  8156. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT
  8157.     AH = 12h
  8158.     BH = 05h
  8159.     BL = object
  8160.         00h handle is DWORD on top of stack
  8161.         timer: start timer to end at a specified time
  8162.         keyboard: add input buffer to queue
  8163.         pointer: move pointer icon to specified position
  8164.         02h send message by value/status=0 to mbox (task's handle on stack)
  8165.         03h send message by value/status=0 to current task's mailbox
  8166.         04h add input buffer to KEYBOARD queue (handle on top of stack)
  8167.         05h add input buffer to task's default KEYBOARD queue
  8168.         06h add an object to OBJECTQ (handle on top of stack)
  8169.         07h add an object to task's default OBJECTQ
  8170.     STACK: (if mailbox)  DWORD length
  8171.                  DWORD address
  8172.            (if keyboard) DWORD status (scan code in keystroke mode)
  8173.                  DWORD length (should be 1 in keystroke mode)
  8174.                  DWORD address
  8175.            (if objectq)  DWORD handle of object to add
  8176.            (if timer)    DWORD 1/100ths seconds since midnight (actually
  8177.                    only accurate to 1/18 sec)
  8178.            (if pointer)  DWORD column relative to origin of window
  8179.                  DWORD row relative to origin of window
  8180. Return: STACK popped
  8181. Notes:    under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  8182.     the data and status written to a keyboard object must match the format
  8183.       returned by the keyboard object in the current mode
  8184.     the pointer position is scaled according to the current scaling factors
  8185. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  8186. --------Q-1512--BH05-------------------------
  8187. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW
  8188.     AH = 12h
  8189.     BH = 05h
  8190.     BL = window to write to
  8191.         00h DWORD on top of stack is window handle
  8192.         01h write string to task's default window
  8193.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  8194.         0Dh (DV 2.26+) default window of parent of current task
  8195.     STACK: DWORD object handle if handle passed on stack
  8196.            DWORD total length of string (high word == 0)
  8197.            DWORD address of string to display (see #0343)
  8198. Return: indicated actions performed
  8199.     a. non-control characters are displayed (opcodes DEh and DFh control
  8200.        whether the attributes are left or changed to the current attrib)
  8201.     b. CR/LF/BS/Tab cause the usual cursor movement
  8202.     c. ESC starts a data structure with additional commands if following
  8203.        byte is less than 20h; otherwise, it is written to the window
  8204.     STACK:    DWORD handle of new window if window stream opcode E6h
  8205.         else nothing (arguments have been popped)
  8206. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  8207.  
  8208. Format of stream data structure:
  8209. Offset    Size    Description    (Table 0343)
  8210.  00h    BYTE    1Bh magic value identifying start of stream
  8211.  01h    BYTE    stream type (00h, 01h, 10h, 14h-1Fh legal)
  8212.         (see #0344,#0350,#0351,#0352)
  8213.  02h    WORD    length of remainder of stream in bytes
  8214.     var-length fields follow, each an OPCODE followed by
  8215.          zero or more args
  8216.  
  8217. (Table 0344)
  8218. Values for MODE 00h (set or display values) "WINDOW STREAM" opcodes:
  8219. Opcodes:args
  8220.  00h  display 20h blanks with the default attribute
  8221.  01h-1Fh display OPCODE blanks with the default attribute
  8222.  20h  display char with default attribute 20h times
  8223.     BYTE char to repeat
  8224.  21h-3Fh display char with default attribute OPCODE-20h times
  8225.     BYTE char to repeat
  8226.  40h  display 20h blanks with specified attribute
  8227.     BYTE attribute of blanks
  8228.  41h-5Fh display OPCODE-40h blanks with specified attribute
  8229.     BYTE attribute of blanks
  8230.  60h  display next 20h characters
  8231.     20h BYTEs characters to display
  8232.  61h-7Fh display next OPCODE-60h characters
  8233.     N BYTEs characters to display
  8234.  80h-87h display N blanks with default attribute
  8235.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  8236.           [000h means 800h]
  8237.  88h-8Fh display N copies of the character
  8238.     BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  8239.           [000h means 800h]
  8240.     BYTE character to repeat
  8241.  90h-97h display N blanks with specified attribute
  8242.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  8243.           [000h means 800h]
  8244.     BYTE attribute
  8245.  98h-9Fh display string at logical cursor pos
  8246.     BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  8247.           [000h means 800h]
  8248.     N BYTEs string to display
  8249.  A0h  set logical cursor row
  8250.     BYTE row number (0 is top)
  8251.  A1h  set logical cursor column
  8252.     BYTE column number (0 is leftmost)
  8253.  A2h  set top edge of scrolling region
  8254.     BYTE row
  8255.  A3h  set left edge of scrolling region
  8256.     BYTE column
  8257.  A4h  set row of physical window position
  8258.     BYTE line
  8259.  A5h  set column of physical window position
  8260.     BYTE column
  8261.  A6h  set height of physical window
  8262.     BYTE number of rows
  8263.  A7h  set width of physical window
  8264.     BYTE number of columns
  8265.  A8h  set viewport row
  8266.     BYTE row
  8267.  A9h  set viewport column
  8268.     BYTE column
  8269.  AAh  set virtual screen height [contents of window unpredictable after]
  8270.     BYTE rows
  8271.  ABh  set virtual screen width [contents of window unpredictable after]
  8272.     BYTE columns
  8273.  ACh-AEh unused
  8274.  AFh  set compatible/preferred video modes
  8275.     BYTE compatibility/preference mask
  8276.         bit 7    compatible with monochrome
  8277.         bit 6    compatible with color text, EGA/VGA graphics
  8278.         bit 5    compatible with medium-resolution CGA graphics
  8279.         bit 4    compatible with high-resolution CGA graphics
  8280.         bit 3    prefer monochrome
  8281.         bit 2    prefer color text, EGA/VGA graphics
  8282.         bit 1    prefer medium-resolution CGA graphics
  8283.         bit 0    prefer high-resolution CGA graphics
  8284.  B0h  move logical cursor down
  8285.     BYTE number of rows (signed, negative values move up)
  8286.         [if rows=0 and hardware cursor owner, update hardware cursor]
  8287.  B1h  move logical cursor right
  8288.     BYTE number of columns (signed, negative values move left)
  8289.         [if cols=0 and hardware cursor owner, update hardware cursor]
  8290.  B2h  shift top edge of scrolling region
  8291.     BYTE number of rows (signed)
  8292.  B3h  shift left edge of scrolling region
  8293.     BYTE number of columns (signed)
  8294.  B4h  shift physical window down
  8295.     BYTE number of lines (signed)
  8296.  B5h  shift physical window right
  8297.     BYTE number of columns (signed)
  8298.  B6h  expand physical window vertically
  8299.     BYTE number of lines (signed)
  8300.  B7h  expand physical window horizontally
  8301.     BYTE number of columns (signed)
  8302.  B8h  adjust viewport row
  8303.     BYTE number of rows (signed)
  8304.  B9h  adjust viewport column
  8305.     BYTE number of columns (signed)
  8306.  BAh  adjust virtual screen height [contents of window unpredict after]
  8307.     BYTE number of rows to increase (signed)
  8308.  BBh  adjust virtual screen width [contents of window unpredictbl after]
  8309.     BYTE number of columns to increase (signed)
  8310.  BCh-BFh reserved (currently unused)
  8311.  C0h  set logical cursor position
  8312.     BYTE row number (0 is top border)
  8313.     BYTE column number (0 is left border)
  8314.  C1h  set top left corner of scrolling region
  8315.     BYTE row
  8316.     BYTE column
  8317.  C2h  set physical window pos
  8318.     BYTE upper left row (no top border if 0)
  8319.     BYTE upper left column (no left border if 0)
  8320.  C3h  set current window size
  8321.     BYTE number of rows
  8322.     BYTE number of columns
  8323.  C4h  set upper left corner of viewport (portion of virtual screen displayed
  8324.       in window)
  8325.     BYTE row
  8326.     BYTE column
  8327.  C5h  set size of virtual screen [contents unpredictable afterwards]
  8328.     BYTE number of rows
  8329.     BYTE number of columns
  8330.  C6h  unused
  8331.  C7h  unused
  8332.  C8h  set logical cursor relative to current position
  8333.     BYTE number of rows to move down (signed)
  8334.     BYTE number of columns to move right (signed)
  8335.         [if rows=cols=0 and hardware cursor owner, update hardw cursor]
  8336.  C9h  shift top left corner of scrolling region
  8337.     BYTE number of rows (signed)
  8338.     BYTE number of columns (signed)
  8339.  CAh  set window pos relative to current position
  8340.     BYTE number of rows to shift down (signed)
  8341.     BYTE number of columns to shift right (signed)
  8342.  CBh  set window size relative to current size
  8343.     BYTE number of rows to expand (signed)
  8344.     BYTE number of cols to expand (signed)
  8345.  CCh  shift viewport relative to current position
  8346.     BYTE rows to shift (signed)
  8347.     BYTE cols to shift (signed)
  8348.  CDh  resize virtual screen
  8349.     BYTE number of rows to expand (signed)
  8350.     BYTE number of columns to expand (signed)
  8351.  CEh  scroll text when using E8h-EBh/F8h-FBh opcodes (default)
  8352.  CFh  scroll attributes when using  E8h-EBh/F8h-FBh opcodes
  8353.  D0h  allow window frame to extend beyond screen
  8354.  D1h  always display a complete frame, even if window extends beyond edge of
  8355.       screen
  8356.  D2h  allow DV to change logical colors on video mode switch (default)
  8357.  D3h  application changes logical attributes
  8358.  D4h  window is visible [must redraw to actually make visible]
  8359.  D5h  window is hidden [must redraw to actually remove]
  8360.  D6h  window has frame (default)
  8361.  D7h  window unframed [must redraw to actually remove frame]
  8362.  D8h  READ/READN will read characters from window (default)
  8363.  D9h  READ/READN will read attributes from window
  8364.  DAh  use logical attributes, which may be remapped (see #0345)
  8365.  DBh  use physical attributes for characters
  8366.  DCh  enable special actions for control characters (default)
  8367.  DDh  disable special control char handling, all chars displayable by BIOS TTY
  8368.       call
  8369.  DEh  write both character and attribute (default)
  8370.  DFh  write character only, leave attribute untouched
  8371.  E0h  repeat following commands through E1h opcode
  8372.     BYTE number of times to repeat (00h means 256 times)
  8373.  E1h  end of commands to repeat, start repeating them
  8374.  E2h  set current output color
  8375.     BYTE color
  8376.  E3h  clear virtual screen from scroll origin to end using current color
  8377.  E4h  redraw window
  8378.  E5h  select menu style
  8379.     BYTE style (normally 18h)
  8380.         bits 5,4 = 01 use two-letter menu entries for remainder of
  8381.           this stream
  8382.  E5h  (panel file only)
  8383.     BYTE modifier
  8384.         bits 7,6 = 11 panel stream creates new window
  8385.              = 10 panel defines new field table for existing window
  8386.              = 01 panel stream uses existing window & field table
  8387.         bit 5 = 1 stream contains a field table (create kyboard object)
  8388.         bit 4 = 1 stream defines input fields (create keyboard object)
  8389.         bit 3 = 1 stream defines select fields but not input fields
  8390.         bit 2 = 1 stream defines exclusive input window (DV 2.2)
  8391.         bit 1 reserved
  8392.         bit 0 reserved
  8393.  E6h  create new window and perform rest of manipulations in new window
  8394.     BYTE number of rows
  8395.     BYTE number of columns
  8396.     Return: DWORD object handle of new window returned on stack at end
  8397.     Note:    the window is created with a physical size of 0x0 at the
  8398.           same position as the window to which this stream was sent
  8399.  E7h  no operation
  8400.  E8h  scroll area up (top left corner defined by opcode C1h)
  8401.     BYTE height
  8402.     BYTE width
  8403.  E9h  scroll area down (top left corner defined by opcode C1h)
  8404.     BYTE height
  8405.     BYTE width
  8406.  EAh  scroll area left (top left corner defined by opcode C1h)
  8407.     BYTE height
  8408.     BYTE width
  8409.  EBh  scroll area right (top left corner defined by opcode C1h)
  8410.     BYTE height
  8411.     BYTE width
  8412.  ECh  set logical attributes for window contents
  8413.     BYTE video modes command applies to
  8414.         bit 7    monochrome
  8415.         bit 6    color text, EGA/VGA graphics
  8416.         bit 5    medium-resolution CGA graphics
  8417.         bit 4    high-resolution CGA graphics
  8418.     BYTE which attributes to set
  8419.         bit 7    if set, copy single following byte to indicated attribs
  8420.         bits 4-6  number of first attribute to change - 1
  8421.         bits 0-3  number of consecutive attributes to change
  8422.     N BYTEs new attributes
  8423.  EDh  set logical attributes for window frame
  8424.     BYTE video modes command applies to (also see opcode ECh)
  8425.     BYTE which attributes to set
  8426.         bit 7    if set, copy single following byte to indicated attrs
  8427.         bits 4-6  number of first attribute to change - 1
  8428.         bits 0-3  number of consecutive attributes to change
  8429.     N BYTEs new attributes
  8430.           attributes
  8431.                1 = top left corner
  8432.                2 = top right corner
  8433.                3 = bottom left corner
  8434.                4 = bottom right corner
  8435.                5 = top edge
  8436.                6 = bottom edge
  8437.                7 = left edge
  8438.                8 = right edge
  8439.  EEh  set characters for window frame
  8440.     BYTE video modes command applies to (also see opcode ECh)
  8441.     BYTE which characters to set
  8442.         bit 7    if set, copy single following byte to indicated chars
  8443.         bits 4-6  number of first character to change - 1
  8444.         bits 0-3  number of consecutive characters to change
  8445.     N BYTEs new chars (same relative position as attributes above)
  8446.  EFh  set window name
  8447.     BYTE length of name (should be in range 0 to logical screen width)
  8448.     N BYTEs name
  8449.  F0h  clear input field to blanks
  8450.     BYTE field number
  8451.  F1h  fill input field with character
  8452.     BYTE field number
  8453.     BYTE char
  8454.  F2h  set color of input field
  8455.     BYTE field number (1-N)
  8456.     BYTE attribute
  8457.  F3h  set initial contents of input field
  8458.     BYTE field number (1-N)
  8459.     N BYTEs enough chars to exactly fill field as defined by op FFh
  8460.  F4h  position cursor to start of specific input field
  8461.     BYTE field number (1-N)
  8462.  F5h  change field table entry
  8463.     BYTE field number
  8464.     7-8 BYTEs field table entry (also see opcode FFh below)
  8465.  F6h  set field type
  8466.     BYTE field number
  8467.     BYTE type
  8468.         00h inactive
  8469.         40h output field
  8470.         80h input field
  8471.         C0h deselected field
  8472.         C2h selected field
  8473.  F7h  "broadcast write"    write data to fields with program output bit set in
  8474.       the field table entry, in field number order
  8475.     N BYTEs (total length of all program output fields)
  8476.  F8h  scroll field up a line
  8477.     BYTE field number
  8478.  F9h  scroll field down a line
  8479.     BYTE field number
  8480.  FAh  scroll field left
  8481.     BYTE field number
  8482.  FBh  scroll field right
  8483.     BYTE field number
  8484.  FCh  set field table header
  8485.     6 BYTEs    field table header (see #0346)
  8486.  FDh  reset modified bit for all fields
  8487.  FEh  reset selected and modified bits for all fields
  8488.  FFh  set up input fields
  8489.     6 BYTEs    table header (see #0346)
  8490.     7/8N BYTEs the field table entries, one for each field (see #0348)
  8491.     Note:    DESQview uses and updates the actual copy of the information
  8492.           which is contained in the stream.  Thus this info must remain
  8493.           intact until after the data entry is complete.
  8494. SeeAlso: #0343,#0350
  8495.  
  8496. (Table 0345)
  8497. Values for TopView logical attributes:
  8498.  01h    normal text
  8499.  02h    highlighted normal text
  8500.  03h    help text
  8501.  04h    highlighted help text
  8502.  05h    error message
  8503.  06h    highlighted error message
  8504.  07h    emphasized text
  8505.  08h    marked text
  8506.  9-16    reverse video versions of 1-8
  8507. SeeAlso: #0344
  8508.  
  8509. Format of TopView field table header:
  8510. Offset    Size    Description    (Table 0346)
  8511.  00h    BYTE    number of fields (must be <= existing number of fields)
  8512.  01h    BYTE    screen behavior bits (see #0347)
  8513.  02h    BYTE    current input field (updated by DESQview)
  8514.  03h    BYTE    current select field (updated by DESQview)
  8515.  04h    BYTE    attribute for select fields when they are pointed at
  8516.  05h    BYTE    attribute for select fields which have been selected
  8517. SeeAlso: #0344,#0348
  8518.  
  8519. Bitfields for TopView screen behavior bits:
  8520. Bit(s)    Description    (Table 0347)
  8521.  7    reserved
  8522.  6    menu items may be selected via keyboard
  8523.  5    left mouse button in "status" mode (press anywhere in window
  8524.       immediately returns control to application)
  8525.  4    right mouse button in "status" mode
  8526.  3    select fields return contents or blanks rather than 'Y' or 'N'
  8527.  2    modified bits reset on return to application
  8528.  1-0    type of data returned
  8529.     00 no data returned on read of keyboard
  8530.     01 data returned as array of characters containing all fields packed
  8531.           together, with no field numbers
  8532.     10 data returned as numbered variable-length records for all fields
  8533.     11 data returned as numbered variable-length records for the fields
  8534.           which were modified
  8535. SeeAlso: #0344
  8536.  
  8537. Format of TopView field table entry:
  8538. Offset    Size    Description    (Table 0348)
  8539.  00h    BYTE    start row    \
  8540.  01h    BYTE    start column  \ if menu selection and start is to
  8541.  02h    BYTE    end row          / right or below end, select from kbd only
  8542.  03h    BYTE    end column   /
  8543.  04h    BYTE    field type (see #0349)
  8544.  05h    BYTE    modifier
  8545.         if type is fill-in, then bit flags to determine behavior
  8546.           bit 7     automatically enter CR when field full
  8547.           bit 6     move to next field when current field is full
  8548.           bit 5     enter text from right end (for numbers)
  8549.           bit 4     force input to uppercase
  8550.           bit 3     clear old contents on first keystroke
  8551.           bit 2     input returned when cursor moves out of
  8552.               modified field ("validate", API level 2.02+)
  8553.           bit 1     reserved
  8554.           bit 0     reserved
  8555.         if select field, first key to press to activate
  8556.           00h if have to point-&-click or is an extended-ASCII
  8557.               keystroke (only if two-key menus enabled)
  8558.  06h    BYTE    (select field only) normal color of field
  8559.  07h    BYTE    second key for select field.  This byte is present iff
  8560.           two-letter menu entries selected with opcode E5h, and in that
  8561.           case is present regardless of field type
  8562. SeeAlso: #0346
  8563.  
  8564. Bitfields for TopView field type:
  8565. Bit(s)    Description    (Table 0349)
  8566.  7,6    field class
  8567.     00 inactive (non-entry) field
  8568.     01 echos keystrokes input to make menu selection
  8569.     10 fill-in field
  8570.     11 select field
  8571.  5    field can be filled by broadcast write (F7h opcode)
  8572.  4    reserved
  8573.  3    reserved
  8574.  2    reserved
  8575.  1    set if field selected
  8576.  0    set if field modified
  8577. SeeAlso: #0348
  8578.  
  8579. (Table 0350)
  8580. Values for MODE 01h "QUERY STREAM" opcodes:
  8581. (valid only for those opcodes listed here)
  8582.  A0h return logical cursor row in next byte
  8583.  A1h return logical cursor column in next byte
  8584.  A2h return top row of scrolling region in next byte
  8585.  A3h return left column of scrolling region in next byte
  8586.  A4h return row of physical window origin in next byte
  8587.  A5h return column of physical window origin in next byte
  8588.  A6h return height of physcial window in next byte
  8589.  A7h return width of physical window in next byte
  8590.  A8h return row of viewport origin in next byte
  8591.  A9h return column of viewport origin in next byte
  8592.  AAh return height of virtual screen in next byte
  8593.  ABh return width of virtual screen in next byte
  8594.  AFh return current video mode in next byte
  8595.  C0h return current logical cursor position in next two bytes
  8596.  C1h return top left corner of scrolling region in next two bytes
  8597.  C2h return current window position in next two bytes
  8598.  C3h return current window size in next two bytes
  8599.  C4h return current viewport origin in next two bytes
  8600.  C5h return current virtual screen size in next two bytes
  8601.  D0h \ overwritten with D0h if frames may fall off screen edge
  8602.  D1h /               D1h if frames always displayed entirely
  8603.  D2h \ overwritten with D2h if DESQview controls color palette
  8604.  D3h /               D3h if application changes color palette
  8605.  D4h \ overwritten with D4h if window visible
  8606.  D5h /               D5h if window hidden
  8607.  D6h \ overwritten with D6h if window has frame
  8608.  D7h /               D7h if window unframed
  8609.  D8h \ overwritten with D8h if reading characters from window
  8610.  D9h /               D9h if reading attributes from window
  8611.  DAh \ overwritten with DAh if using logical attributes
  8612.  DBh /               DBh if using physical attributes
  8613.  DCh \ overwritten with DCh if TTY control char interpretation on
  8614.  DDh /               DDh if TTY control char interpretation off
  8615.  DEh \ overwritten with DEh if writing both characters and attributes
  8616.  DFh /               DFh if leaving attributes untouched
  8617.  E2h return current color in next byte
  8618.  ECh get logical attributes for window contents
  8619.     BYTE execute call if currently in specified video mode
  8620.         bit 7    monochrome
  8621.         bit 6    color text, EGA/VGA graphics
  8622.         bit 5    medium-resolution CGA graphics
  8623.         bit 4    high-resolution CGA graphics
  8624.     BYTE which attributes to get
  8625.         bit 7    unused???
  8626.         bits 4-6 first attribute to get - 1
  8627.         bits 0-3 number of consecutive attributes
  8628.     N BYTEs buffer to hold attributes
  8629.  EDh get logical attributes for window frame
  8630.     BYTE execute call if currently in video mode (also see opcode ECh)
  8631.     BYTE which attributes to get
  8632.         bit 7    unused???
  8633.         bits 4-6 first attribute to get - 1
  8634.         bits 0-3 number of consecutive attributes
  8635.     N BYTEs buffer to hold attributes
  8636.  EEh get characters for window frame
  8637.     BYTE execute call if currently in video mode (also see opcode ECh)
  8638.     BYTE which attributes to get
  8639.         bit 7    unused???
  8640.         bits 4-6 first char to get - 1
  8641.         bits 0-3 number of consecutive chars
  8642.     N BYTEs buffer to hold chars
  8643.  EFh return first N characters of current window name
  8644.     BYTE    max length of returned name
  8645.     N BYTEs buffer to hold window name
  8646.  F3h return contents of specified field
  8647.     BYTE field number
  8648.     N BYTEs buffer to hold field contents (size equal to field size)
  8649.  F5h get field table entry
  8650.     BYTE field number
  8651.     7-8 BYTEs buffer to hold field table entry (see #0348)
  8652.     Notes:    DV < 2.26 always returns 7 bytes
  8653.         DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field table
  8654.           is using 8-byte entries and eighth byte after    F5h is E7h
  8655.           (NOP); otherwise, 7 bytes are returned
  8656.         DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes depending
  8657.           on the field table entry size
  8658.  F6h get type of a field
  8659.     BYTE field number
  8660.     BYTE type
  8661.  FCh get field table header
  8662.     6 BYTEs buffer to store field table header (see #0346)
  8663. SeeAlso: #0343,#0351
  8664.  
  8665. (Table 0351)
  8666. Values for MODE 10h "MANAGER STREAM" opcodes (valid only for those listed):
  8667.  00h allow window to be moved horizontally
  8668.  01h allow window to be moved vertically
  8669.  02h allow window to change width
  8670.  03h allow window to change height
  8671.  04h allow window to be scrolled horizontally
  8672.  05h allow window to be scrolled vertically
  8673.  06h allow "Close Window" menu selection for application
  8674.  07h allow "Hide Window" menu selection for application
  8675.  08h allow application to be suspended ("Rearrange/Freeze")
  8676.  0Eh allow "Scissors" menu
  8677.  10h allow DESQview main menu to be popped up
  8678.  11h allow "Switch Windows" menu
  8679.  12h allow "Open Window" menu
  8680.  13h allow "Quit" menu selection
  8681.  20h-33h opposite of 00h-13h, disallow specified action
  8682.  40h notify if horizontal position of window changes
  8683.  41h notify if vertical position of window changes
  8684.  42h notify if width of window changes
  8685.  43h notify if height of window changes
  8686.  44h notify if window scrolled horizontally
  8687.  45h notify if window scrolled vertically
  8688.  46h notify if window is closed--program has to clean up and exit itself
  8689.  47h notify if window is hidden
  8690.  48h notify if "?" on main menu selected
  8691.  49h notify if pointer message sent to window
  8692.  4Ah notify if window is placed in foreground
  8693.  4Bh notify if window is placed in background
  8694.  4Ch notify if video mode changes
  8695.  4Dh notify if "Scissors" menu "Cut" option selected
  8696.  4Eh notify if "Scissors" menu "Copy" option selected
  8697.  4Fh notify if "Scissors" menu "Paste" option selected
  8698.  50h notify if DESQview main menu about to pop up
  8699.  51h notify if DESQview main menu popped down
  8700.  60h-71h     opposite of 40h-51h: don't notify on specified event
  8701.  84h attach window to parent task's window (both move together)
  8702.  85h detach window from parent task's window (may move independently)
  8703.  86h disable background operation for application
  8704.  87h enable running in background
  8705.  88h set minimum size of physical window
  8706.     BYTE rows
  8707.     BYTE columns
  8708.  89h set maximum size of physical window
  8709.     BYTE rows
  8710.     BYTE cols
  8711.  8Ah set primary asynchronous notification routine (see #0353)
  8712.     DWORD address of routine, 0000h:0000h means none (see also below)
  8713.  8Bh set async notification parameter
  8714.     DWORD 32-bit value passed to 8Ah async routine in DS:SI
  8715.  ACh (DV2.2+) perform regular select field attribute processing
  8716.  ADh (DV2.2+) protect attributes in selected field from being lost
  8717.  AEh make window default notify window for owning app (API level 2.00+)
  8718.  AFh set selected field marker character
  8719.     BYTE character to display at left edge of selected fields
  8720.  BCh set standard field processing mode
  8721.  BDh set alternate field processing mode (enables cursor pad for menus)
  8722.  BEh disables changing reverse logical attributes with ECh opcode
  8723.  BFh enables changing reverse logical attributes with ECh opcode
  8724.  C0h make current window topmost in system
  8725.  C1h force current process into foreground
  8726.  C2h make current window topmost in process
  8727.  C3h position mouse pointer relative to origin of current field
  8728.     BYTE rows below upper left corner of field
  8729.     BYTE columns to right of upper left corner of field
  8730.  C4h position mouse pointer relative to origin of given field
  8731.     BYTE field number
  8732.     BYTE rows below upper left corner of field
  8733.     BYTE columns to right of upper left corner of field
  8734.  C5h orphan current window (also hides it)
  8735.     Note: must be last in stream; all subsequent commands ignored
  8736.  C6h show all windows for this process
  8737.  C7h hide all windows for this process
  8738.  C8h suspend process and hide all its windows
  8739.  C9h force current process into background
  8740.  CAh make current window bottom-most in process
  8741.  CBh cancel current window manager operation, remove DV menu, give control
  8742.       to topmost application
  8743.  CCh orphan window and give it to the system for use as paste data
  8744.  CEh reorder windows
  8745.     DWORD pointer to null-terminated list of words; each word is segment
  8746.           of object handle for a window
  8747.  FFh no operation
  8748. SeeAlso: #0343,#0350,#0352
  8749.  
  8750. (Table 0352)
  8751. Values for MODES 14h to 1Fh "USER STREAMS":
  8752.     normally NOPs, but may be defined by SETESC message to invoke FAR
  8753.     routines, one for each mode number
  8754.       on entry to handler,
  8755.         DS:SI -> first byte of actual stream (not header)
  8756.         CX = number of bytes in stream
  8757.         ES:DI = window's handle
  8758. SeeAlso: #0350,#0351
  8759.  
  8760. (Table 0353)
  8761. Values asynchronous notification routine defined by man.stream 8Ah called with:
  8762.     ES:DI = handle of window
  8763.     DS:SI is 32-bit value set by 8Bh manager stream opcode
  8764.        mailbox contains message indicating event
  8765.           Opcode
  8766.            40h  horizontal movement
  8767.            DWORD object handle of window
  8768.            BYTE     new row
  8769.            BYTE     new col
  8770.            41h  vertical movement
  8771.            DWORD object handle of window
  8772.            BYTE     new row
  8773.            BYTE     new col
  8774.            42h  horizontal size change
  8775.            DWORD object handle of window
  8776.            BYTE     new rows
  8777.            BYTE     new cols
  8778.            43h  vertical size change
  8779.            DWORD object handle of window
  8780.            BYTE     new rows
  8781.            BYTE     new cols
  8782.            44h  scrolled horizontally
  8783.            DWORD object handle of window
  8784.            BYTE     mouse row within window
  8785.            BYTE     mouse column within window
  8786.            BYTE     field mouse is on, 0 if none
  8787.            BYTE     amount moved: >0 right, <0 left, 0 done
  8788.            45h  scrolled vertically
  8789.            DWORD object hande of window
  8790.            BYTE     mouse row within window
  8791.            BYTE     mouse column within window
  8792.            BYTE     field mouse is on, 0 if none
  8793.            BYTE     amount moved: >0 down, <0 up, 0 done
  8794.            46h  window close request
  8795.            DWORD object handle of window
  8796.            BYTE     mouse pointer row
  8797.            BYTE     mouse pointer column
  8798.            BYTE     field mouse is on, 0 if none
  8799.            47h  application's windows hidden
  8800.            48h  Help for Program selected
  8801.            DWORD object handle of window
  8802.            BYTE     mouse pointer row
  8803.            BYTE     mouse pointer column
  8804.            BYTE     field mouse is on, 0 if none
  8805.            49h  pointer message sent to window
  8806.            DWORD pointer handle which received message
  8807.            4Ah  switched to window from another ("raise")
  8808.            4Bh  switched away from the window ("lower")
  8809.            4Ch  video mode changed
  8810.            BYTE new BIOS video mode
  8811.            4Dh  Scissors/cUt selected
  8812.            DWORD object handle of window
  8813.            BYTE     row of upper left corner
  8814.            BYTE     column of upper left corner
  8815.            BYTE     field number ul corner is in, 0=none
  8816.            DWORD handle of orphaned window created with
  8817.              copy of data from specified region
  8818.            BYTE     height of region
  8819.            BYTE     width of region
  8820.            4Eh  Scissors/Copy selected
  8821.            DWORD object handle of window
  8822.            BYTE     row of upper left corner
  8823.            BYTE     column of upper left corner
  8824.            BYTE     field number ul corner is in, 0=none
  8825.            DWORD handle of orphaned window created with
  8826.              copy of data from specified region
  8827.            BYTE     height of region
  8828.            BYTE     width of region
  8829.            4Fh  Scissors/Paste selected
  8830.            DWORD object handle of window
  8831.            BYTE     row of upper left corner
  8832.            BYTE     column of upper left corner
  8833.            BYTE     field number ul corner is in, 0=none
  8834.            DWORD handle of orphaned window with data
  8835.            BYTE     height of region
  8836.            BYTE     width of region
  8837.             Note: orphaned data window should be adopted or freed
  8838.                 when done
  8839.            50h  main menu about to pop up
  8840.            51h  main menu popped down
  8841. Return: all registers unchanged
  8842. --------Q-1512--BH06-------------------------
  8843. INT 15 - DESQview 2.20+ - SEND MESSAGE - "SETPRI" - SET PRIORITY WITHIN OBJECTQ
  8844.     AH = 12h
  8845.     BH = 06h
  8846.     BL = object
  8847.         00h object handle in DWORD on top of stack
  8848.         mailbox, keyboard, pointer, or timer
  8849.         (DV 2.50+) window
  8850.         01h (DV 2.50+) current task's window
  8851.         04h given task's keyboard (task's handle on top of stack)
  8852.         05h current task's default keyboard
  8853.     STACK: DWORD new priority of object in task's OBJECTQ
  8854.             (new priority of task if window handle)
  8855. Return: STACK popped
  8856. Notes:    initially all objects have the same default value.  Should only make
  8857.       relative adjustments to this default value.
  8858.     when changing priorities, all objects already on the objectq are
  8859.       reordered
  8860.     for window handles, only the non-blocked task(s) with the highest
  8861.       priority receive CPU time under DESQview 2.50-2.52; the default
  8862.       priority is 0Ah
  8863. SeeAlso: AH=12h/BH=07h,AH=12h/BH=87h
  8864. --------Q-1512--BH07-------------------------
  8865. INT 15 - DESQview 2.20+ - SEND MESSAGE - "GETPRI" - GET PRIORITY WITHIN OBJECTQ
  8866.     AH = 12h
  8867.     BH = 07h
  8868.     BL = object
  8869.         00h object handle in DWORD on top of stack
  8870.         mailbox, keyboard, pointer, or timer
  8871.         (DV 2.50+) window
  8872.         01h (DV 2.50+) current task's window
  8873.         04h given task's keyboard (task's handle on top of stack)
  8874.         05h current task's default keyboard
  8875. Return: STACK: DWORD object priority
  8876. Note:    initially all objects have the same default value.  Should only make
  8877.       relative adjustments to this default value.
  8878. SeeAlso: AH=12h/BH=06h
  8879. --------Q-1512--BH08-------------------------
  8880. INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE
  8881.     AH = 12h
  8882.     BH = 08h
  8883.     BL = object
  8884.         00h handle in DWORD on top of stack
  8885.         window: total character positions in window
  8886.         timer: elapsed time since timer started
  8887.         pointer: number of messages queued to pointer object
  8888.         panel: number of panels in panel file
  8889.         keyboard: number of input buffers queued
  8890.         01h total chars in current task's default window
  8891.         02h number of messages in task's mailbox (task's handle on stack)
  8892.         03h number of messages in current task's mailbox
  8893.         04h number of input buffers queued in task's kbd (handle on stack)
  8894.         05h number of input buffers queued for current task's default kbd
  8895.         06h number of objects queued in OBJECTQ (task's handle on stack)
  8896.         07h number of objects queued in current task's OBJECTQ
  8897.         0Ch (DV 2.26+) total chars in window owning handle on top of stack
  8898.         0Dh (DV 2.26+) total chars in parent task's window
  8899. Return: DWORD on top of stack is result (any handle on stack has been popped)
  8900. Note:    for panel objects, a count of zero is returned if no panel file is open
  8901.       for the object
  8902. SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h
  8903. --------Q-1512--BH09-------------------------
  8904. INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH
  8905.     AH = 12h
  8906.     BH = 09h
  8907.     BL = object
  8908.         00h handle in DWORD on top of stack
  8909.         window: get chars/line
  8910.         timer: get 1/100 seconds remaining before timer expires
  8911.         mailbox: (DV/X) get number of bytes queued to mailbox
  8912.         01h get number of chars/line in current task's default window
  8913.         0Ch (DV 2.26+) get chars/line in window owning handle on top of stk
  8914.         0Dh (DV 2.26+) get chars/line in parent task's window
  8915. Return: DWORD on top of stack is length (any handle on stack has been popped)
  8916. SeeAlso: AH=12h/BH=08h
  8917. --------Q-1512--BH0A-------------------------
  8918. INT 15 - TopView - SEND MESSAGE - "ADDTO" - WRITE CHARS AND ATTRIBS TO WINDOW
  8919.     AH = 12h
  8920.     BH = 0Ah
  8921.     BL = window to write to
  8922.         00h window handle is DWORD on top of stack
  8923.         01h current task's default window
  8924.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  8925.         0Dh (DV 2.26+) default window of parent of current task
  8926.     STACK:    DWORD count of attributes
  8927.         DWORD address of attribute string
  8928.         DWORD count of characters
  8929.         DWORD address of character string
  8930. Return: STACK popped
  8931. Notes:    if one string is longer than the other, the shorter one will be reused
  8932.       until the longer one is exhausted
  8933.     the cursor is left just after the last character written
  8934. SeeAlso: AH=12h/BH=0Bh"WINDOW"
  8935. --------Q-1512--BH0A-------------------------
  8936. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SEND MAILBOX MESSAGE/STAT BY VALUE
  8937.     AH = 12h
  8938.     BH = 0Ah
  8939.     BL = mailbox to write to
  8940.         00h handle is DWORD on top of stack
  8941.         02h default mailbox of task whose handle is on top of stack
  8942.         03h current task's default mailbox
  8943.     STACK:    DWORD    status (low byte)
  8944.         DWORD    length of message
  8945.         DWORD    address of message
  8946. Return: STACK popped
  8947. Notes:    the message is copied into either system or common memory
  8948.     insufficient memory normally causes the process to be aborted; under
  8949.       DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h)
  8950. SeeAlso: AH=12h/BH=0Bh"MAILBOX"
  8951. --------Q-1512--BH0A-------------------------
  8952. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS
  8953.     AH = 12h
  8954.     BH = 0Ah
  8955.     BL = object
  8956.         00h handle is DWORD on top of stack
  8957.         timer: start timer for specified interval
  8958.         pointer: set control flags (see #0355)
  8959.         keyboard: set control flags (see #0354)
  8960.         04h set control flags on KEYBOARD object (handle on top of stack)
  8961.         05h set control flags on task's default KEYBOARD object
  8962.     STACK: (if timer)   DWORD duration in 1/100 seconds
  8963.            (otherwise)  DWORD bits to set
  8964. Return: STACK popped
  8965. SeeAlso: AH=12h/BH=0Bh"OBJECT"
  8966.  
  8967. Bitfields for DESQview keyboard object bits:
  8968. Bit(s)    Description    (Table 0354)
  8969.  15    reserved, can't be set
  8970.  14    unused
  8971.  13    reserved, can't be set
  8972.  12-6    unused
  8973.  5    (DV 2.2+) exclusive input
  8974.  4    filter all keys (used with handler established by SETESC)
  8975.     if 0, only keys that would normally be displayed are filtered
  8976.  3    program continues executing while input in progress
  8977.  2    insert mode active for field mode
  8978.  1    hardware cursor displayed when task is hardware cursor owner
  8979.     must be set if keyboard in field mode and field table includes input
  8980.       fields
  8981.  0    keyboard is in field mode rather than keystroke mode
  8982.  
  8983. Bitfields for DESQview pointer object bits:
  8984. Bit(s)    Description    (Table 0355)
  8985.  15    reserved, can't be set
  8986.  14-8    unused
  8987.  7    mouse pointer is hidden while in window
  8988.  6    get messages even if window not topmost
  8989.  5    get messages even if window not foreground
  8990.  4    multiple clicks separated by less than 1/3 second are counted and
  8991.       returned in a single message
  8992.  3    pointer position is relative to screen origin, not window origin
  8993.  2    send message on button release as well as button press
  8994.  1    (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever the
  8995.       pointer leaves the window
  8996.  0    send message only on button activity, not movement
  8997.     DV-specific, and INT 15/AX=DE0Fh must have been called first
  8998. --------Q-1512--BH0B-------------------------
  8999. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - WRITE ATTRIBUTES TO WINDOW
  9000.     AH = 12h
  9001.     BH = 0Bh
  9002.     BL = window to write attributes to
  9003.         00h handle is DWORD on top of stack
  9004.         01h current task's default window
  9005.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  9006.         0Dh (DV 2.26+) default window of parent of current task
  9007.     STACK:    DWORD number of attributes to write
  9008.         DWORD address of attributes
  9009. Return: STACK popped
  9010. Note:    the attributes are written starting at the current cursor position; the
  9011.       cursor is left just after the last position written
  9012. SeeAlso: AH=12h/BH=0Ah"WINDOW"
  9013. --------Q-1512--BH0B-------------------------
  9014. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - SEND MAILBOX MESSAGE/STAT BY REF
  9015.     AH = 12h
  9016.     BH = 0Bh
  9017.     BL = mailbox to write to
  9018.         00h handle is DWORD on top of stack
  9019.         02h default mailbox of task whose handle is on top of stack
  9020.         03h current task's default mailbox
  9021.     STACK:    DWORD    status (low byte)
  9022.         DWORD    length of message
  9023.         DWORD    address of message
  9024. Return: STACK popped
  9025. Notes:    only a pointer to the message is stored, but the write may still fail
  9026.       due to insufficient memory
  9027.     under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  9028. SeeAlso: AH=12h/BH=0Ah"MAILBOX"
  9029. --------Q-1512--BH0B-------------------------
  9030. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - REMOVE OBJECT FROM OBJECTQ
  9031.     AH = 12h
  9032.     BH = 0Bh
  9033.     BL = OBJECTQ from which to remove all copies of a particular object
  9034.         06h OBJECTQ of task whose handle is on top of stack
  9035.         07h task's default OBJECTQ
  9036.     STACK:    DWORD    handle of object to remove
  9037. Return: STACK popped
  9038. Note:    should be sent whenever an object is erased or closed
  9039. --------Q-1512--BH0B-------------------------
  9040. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS
  9041.     AH = 12h
  9042.     BH = 0Bh
  9043.     BL = object
  9044.         00h handle is DWORD on top of stack
  9045.         pointer: reset control flags
  9046.         keyboard: reset control flags
  9047.         04h clear control flags on KEYBOARD object (handle on top of stack)
  9048.         05h clear control flags on task's default KEYBOARD object
  9049.     STACK:    DWORD    which bits to clear (see #0354,#0355)
  9050. Return: STACK popped
  9051. SeeAlso: AH=12h/BH=0Ah"OBJECT"
  9052. --------Q-1512--BH0C-------------------------
  9053. INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT
  9054.     AH = 12h
  9055.     BH = 0Ch
  9056.     BL = object
  9057.         00h handle is DWORD on top of stack
  9058.         window:      fill with given character from scroll origin to end
  9059.         keyboard: attach to a window
  9060.         timer:      open
  9061.         pointer:  start taking input for window
  9062.         panel:      associate with a panel file
  9063.         01h fill task's default window with given char from scrl org to end
  9064.         02h open given task's mailbox for input (task's handle on stack)
  9065.         03h open current task's mailbox
  9066.         04h attach a KEYBOARD to a window (handle on top of stack)
  9067.         05h attach task's default KEYBOARD to a window
  9068.         06h open a task's OBJECTQ (task's handle on top of stack)
  9069.         07h open current task's OBJECTQ
  9070.         0Ch (DV 2.26+) fill def window of task owning handle on top of stck
  9071.         0Dh (DV 2.26+) fill default window of parent of current task
  9072.      STACK: (if window)   DWORD character to fill with
  9073.         (if keyboard) DWORD handle of window to attach to
  9074.         (if pointer)  DWORD handle of window to attach to
  9075.         (if panel)    DWORD length of filename or resident panel
  9076.                   DWORD address of filename or resident panel
  9077.         (otherwise)   nothing
  9078. Return: STACK popped
  9079. Notes:    if first byte of panel file name is 1Bh, then the "name" IS a panel
  9080.     if first two bytes of panel file "name" are C0hC3h, then the "name" IS
  9081.       the panel file
  9082.     result code of open may be retrieved with STATUS message
  9083.     logical cursor is left at scroll origin after filling window
  9084.     the task opening a mailbox becomes its owner, and the only task allowed
  9085.       to read the mailbox
  9086.     messages are only sent to a pointer object when the mouse is positioned
  9087.       in the window to which the pointer has been attached
  9088.     there is no need to explicitly open a timer object, as ADDTO and WRITE
  9089.       messages automatically open the timer
  9090. SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h"LOCK"
  9091. --------Q-1512--BH0D-------------------------
  9092. INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT
  9093.     AH = 12h
  9094.     BH = 0Dh
  9095.     BL = object
  9096.         00h handle is DWORD on top of stack
  9097.         timer:      close
  9098.         keyboard: detach from window and discard queued input
  9099.         pointer:  stop taking input
  9100.         panel:      close
  9101.         mailbox:  close, unlock, and discard any pending messages
  9102.         02h close given task's mailbox (task's handle on top of stack)
  9103.         03h close task's default mailbox
  9104.         04h close KEYBOARD object (handle on top of stack)
  9105.         05h close task's default KEYBOARD
  9106.         06h close given task's OBJECTQ (task's handle on top of stack)
  9107.         07h close current task's OBJECTQ
  9108. Return: STACK popped if handle passed on stack
  9109. Notes:    when an OBJECTQ is closed, each object in the OBJECTQ is sent an
  9110.       ERASE message (AH=12h/BH=0Eh)
  9111.     when a panel object is closed, the panel file and any panels currently
  9112.       in use are freed; window and keyboard objects created by APPLY are
  9113.       not affected, but field mode input ceases
  9114.     open but idle timer objects consume a small amount of CPU time
  9115. SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h"LOCK"
  9116. --------Q-1512--BH0E-------------------------
  9117. INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT
  9118.     AH = 12h
  9119.     BH = 0Eh
  9120.     BL = object
  9121.         00h handle is DWORD on top of stack
  9122.         window:      clear from scroll origin to end of window
  9123.         keyboard: discard input
  9124.         timer:      cancel current interval
  9125.         pointer:  discard all pending messages
  9126.         mailbox:  discard all pending messages
  9127.         01h clear task's default window from scroll origin to end
  9128.         02h discard all queued messages in mailbox (handle on top of stack)
  9129.         03h discard all queued messages in current task's default mailbox
  9130.         04h discard all input queued to KEYBOARD (handle on top of stack)
  9131.         05h discard all input queued to task's default KEYBOARD
  9132.         06h remove all objects from OBJECTQ (task's handle on top of stack)
  9133.         07h remove all objects from current task's OBJECTQ
  9134.         0Ch (DV 2.26+) clear window of task owning handle on top of stack
  9135.         0Dh (DV 2.26+) clear default window of parent of current task
  9136. Return: STACK popped if handle passed on stack
  9137. Note:    when an OBJECTQ is erased, each object in the OBJECTQ is also erased
  9138. SeeAlso: AH=12h/BH=02h
  9139. --------Q-1512--BH0F-------------------------
  9140. INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS
  9141.     AH = 12h
  9142.     BH = 0Fh
  9143.     BL = object
  9144.         00h handle is DWORD on top of stack
  9145.         timer:     is it running?
  9146.         pointer: return status of last message
  9147.         panel:     verify success of last OPEN or APPLY
  9148.         02h return status of last msg READ from mailbox (handle on stack)
  9149.         03h return status of last msg READ from task's default mailbox
  9150.         04h get stat of last msg from task's KEYBOARD (task handle on stk)
  9151.         05h get status of last msg from task's default KEYBOARD
  9152.         06h return whether OBJECTQ is open or not (handle on top of stack)
  9153.         07h return whether task's default OBJECTQ is open or not
  9154. Return: DWORD on top of stack is status (any handle passed on stack popped)
  9155. Notes:    if object is a panel object, the status indicates the error code:
  9156.       00h successful
  9157.       14h panel name not in panel directory
  9158.       15h not enough memory to apply panel
  9159.       16h invalid panel format
  9160.       17h panel file already open
  9161.       81h-92h  DOS error codes+80h            \  codes > 80h indicate
  9162.       95h not enough memory to open panel file     > that the panel was
  9163.       98h null panel file name            /  not opened
  9164.     if object is a timer, the status is:
  9165.       00000000h open but not running
  9166.       40000000h open and running
  9167.       80000000h closed
  9168.     if object is an OBJECTQ, the status is:
  9169.       00000000h open
  9170.       80000000h closed
  9171.     if object is a keyboard in keystroke mode, the status is the extended
  9172.       character code (scan code) of the last keystroke
  9173.     if object is a keyboard in field mode, the status indicates the reason
  9174.       for the last return from the field manager
  9175.       00h Enter key pressed
  9176.       01h Button 1 or keystroke selection
  9177.       02h Button 2
  9178.       03h validation
  9179.       04h auto Enter on field
  9180.       1Bh Escape pressed
  9181.       46h ^Break pressed
  9182.       other: extended code for key terminating input
  9183.     the status of mailbox messages sent by the window manager is always 80h
  9184.     the status of a pointer message is the same as the status field in the
  9185.       message
  9186. SeeAlso: AH=12h/BH=04h"READ"
  9187. --------Q-1512--BH10-------------------------
  9188. INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS
  9189.     AH = 12h
  9190.     BH = 10h
  9191.     BL = object
  9192.         00h handle is DWORD on top of stack
  9193.         window: return TRUE if logical cursor past end of window
  9194.         mailbox: ???
  9195.         01h returns TRUE if logical cursor past end of task's def window
  9196.         02h return ??? for task's mailbox (task's handle on top of stack)
  9197.         03h return ??? for current task's mailbox
  9198.         0Ch (DV 2.26+) check log crsr of window owning handle on top of stk
  9199.         0Dh (DV 2.26+) check log cursor of window of parent task
  9200. Return: DWORD on top of stack is status (any handle on stack has been popped)
  9201. --------Q-1512--BH11-------------------------
  9202. INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR
  9203.     AH = 12h
  9204.     BH = 11h
  9205.     BL = window for which to move cursor
  9206.         00h window's handle is DWORD on top of stack
  9207.         01h task's default window
  9208.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  9209.         0Dh (DV 2.26+) default window of parent of current task
  9210.     STACK: DWORD column
  9211.            DWORD row
  9212. Return: STACK popped
  9213. --------Q-1512--BH11-------------------------
  9214. INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX
  9215.     AH = 12h
  9216.     BH = 11h
  9217.     BL = mailbox to name
  9218.         00h DWORD on top of stack is mailbox handle
  9219.         02h use given task's mailbox (task's handle on top of stack)
  9220.         03h use current task's default mailbox
  9221.     STACK: DWORD length of name
  9222.            DWORD address of name
  9223. Return: STACK popped
  9224. SeeAlso: AH=12h/BH=12h"GETNAME",AX=DE0Eh
  9225. --------Q-1512--BX1100-----------------------
  9226. INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR
  9227.     AH = 12h
  9228.     BX = 1100h
  9229.     STACK: DWORD object handle for pointer object
  9230.            DWORD number of colums to scale pointer position to
  9231.            DWORD number of rows to scale pointer position to
  9232. Return: STACK popped
  9233. SeeAlso: AH=12h/BX=1200h
  9234. --------Q-1512--BH12-------------------------
  9235. INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES
  9236.     AH = 12h
  9237.     BH = 12h
  9238.     BL = window to read from
  9239.         00h handle is DWORD on top of stack
  9240.         01h read next N chars or attributes on task's default window
  9241.         0Ch (DV 2.26+) read window of task owning handle on top of stack
  9242.         0Dh (DV 2.26+) read default window of parent of current task
  9243.     STACK: DWORD count
  9244. Return: STACK: DWORD number of bytes actually read
  9245.            DWORD address of buffer containing data
  9246. Notes:    reading starts at the current logical cursor position; the cursor is
  9247.       updated to point at the character following the last one read
  9248.     any translucent blanks (FFh) which are visible on screen are changed
  9249.       to the character which is seen through them
  9250.     the string produced by the read is placed in an input buffer which may
  9251.       be reused by the next READ or READN of a window
  9252.     window stream opcodes D8h and D9h determine whether the read returns
  9253.       characters or attributes
  9254. SeeAlso: AH=12h/BH=04h"WINDOW",AH=12h/BH=05h"WINDOW"
  9255. --------Q-1512--BH12-------------------------
  9256. INT 15 - DESQview 2.50+ - SEND MESSAGE - "GETNAME" - GET NAME OF MAILBOX
  9257.     AH = 12h
  9258.     BH = 12h
  9259.     BL = mailbox for which to retrieve name
  9260.         00h DWORD on top of stack is mailbox handle
  9261.         02h use given task's mailbox (task's handle on top of stack)
  9262.         03h use current task's default mailbox
  9263.     STACK: DWORD length of buffer for name
  9264.            DWORD pointer to buffer
  9265. Return: STACK: DWORD length of returned name (or size of buffer, if less)
  9266. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  9267. Note:    the returned name is not NUL-terminated
  9268. SeeAlso: AH=12h/BH=11h"SETNAME",AX=DE0Eh
  9269. --------Q-1512--BX1200-----------------------
  9270. INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR
  9271.     AH = 12h
  9272.     BX = 1200h
  9273.     STACK: DWORD object handle for pointer
  9274. Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
  9275.            DWORD pointer pos scaled as if window were this many rows high
  9276. SeeAlso: AH=12h/BX=1100h
  9277. --------Q-1512--BH13-------------------------
  9278. INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW
  9279.     AH = 12h
  9280.     BH = 13h
  9281.     BL = window object
  9282.         00h DWORD on top of stack is handle for window to redraw
  9283.         01h redraw task's default window
  9284.         0Ch (DV 2.26+) redraw window of task owning handle on top of stack
  9285.         0Dh (DV 2.26+) redraw default window of parent of current task
  9286. Return: STACK popped if handle was passed on stack
  9287. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=0Eh
  9288. --------Q-1512--BH13-------------------------
  9289. INT 15 - DESQview 2.50+ - SEND MESSAGE - "READINTO" - GET NEXT MAIL MESSAGE
  9290.     AH = 12h
  9291.     BH = 13h
  9292.     BL = mailbox from which to read
  9293.         00h DWORD on top of stack is mailbox handle
  9294.         02h use given task's mailbox (task's handle on top of stack)
  9295.         03h use current task's default mailbox
  9296.     STACK: DWORD size of buffer in bytes
  9297.            DWORD pointer to buffer
  9298. Return: STACK: DWORD number of bytes read
  9299. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  9300. Notes:    this call blocks if no input is available, but will return less than
  9301.       the requested number of bytes if some (but insufficient) data is
  9302.       available
  9303.     use this call instead of AH=12h/BH=04h if the mailbox has flag bits
  9304.       4 or 5 set, as common memory may be exhausted by that call when
  9305.       attempting to read the next message
  9306. SeeAlso: AH=12h/BH=04h"READ",AH=12h/BH=05h,AH=12h/BH=16h
  9307. --------Q-1512--BX1300-----------------------
  9308. INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON
  9309.     AH = 12h
  9310.     BX = 1300h
  9311.     STACK: DWORD object handle for pointer
  9312.            DWORD character to use for pointer
  9313. Return: STACK popped
  9314. --------Q-1512--BH14-------------------------
  9315. INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS
  9316.     AH = 12h
  9317.     BH = 14h
  9318.     BL = message modifier
  9319.         00h handle is DWORD on top of stack
  9320.         01h define user stream
  9321.         04h intercept keystrokes from KEYBOARD to window (handle on stack)
  9322.         05h intercept keystrokes from task's default KEYBOARD to a window
  9323.     STACK: (if window)   DWORD user stream number (14h-1Fh)
  9324.                  DWORD address of FAR user stream handler
  9325.            (if keyboard) DWORD address of FAR filter function (see #0356)
  9326. Return: STACK popped
  9327.  
  9328. (Table 0356)
  9329. Values keyboard filter function is called with when keyboard is in field mode:
  9330.     AL = character
  9331.     AH = 00h or extended ASCII code if AL = 00h
  9332.     BL = field number
  9333.     CH = cursor column
  9334.     CL = cursor row
  9335.     DL = field type modifier (sixth item in field table entry)
  9336.     DH = seventh item in field table entry
  9337.     ES:SI = window's handle
  9338.     DS:DI -> field table entry for field containing the cursor
  9339. Return: AH = action to take
  9340.         00h use keystroke
  9341.         01h ignore keystroke
  9342.         FFh beep and ignore keystroke
  9343. Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls
  9344. --------Q-1512--BH14-------------------------
  9345. INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE
  9346.     AH = 12h
  9347.     BH = 14h
  9348.     BL = object
  9349.         00h mailbox handle is DWORD on top of stack
  9350.         02h use given task's mailbox (task's handle on top of stack)
  9351.         03h use current task's default mailbox
  9352. Return: STACK popped if BL=00h
  9353. Note:    release exclusive access by sending CLOSE message to mailbox
  9354.     access may be requested multiple times, and requires multiple CLOSEs
  9355. SeeAlso: AH=12h/BH=0Dh
  9356. --------Q-1512--BH15-------------------------
  9357. INT 15 - DESQview v2.20+ - SEND MESSAGE - "SETFLAGS" - SET OBJECT FLAGS
  9358.     AH = 12h
  9359.     BH = 15h
  9360.     BL = object
  9361.         00h DWORD on top of stack
  9362.         mailbox, keyboard, or pointer only
  9363.         02h mailbox for task whose handle is on top of stack
  9364.         03h mailbox for current task
  9365.         04h keyboard for task whose handle is on top of stack
  9366.         05h keyboard for current task
  9367.     STACK: DWORD flags (see #0357,#0358)
  9368. Return: STACK popped
  9369. Notes:    only available if the API level has been set to at least 2.20
  9370.     equivalent to performing SUBFROM and ADDTO calls on the object
  9371.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  9372.       "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
  9373. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h
  9374.  
  9375. Bitfields for DESQview mailbox object flags:
  9376. Bit(s)    Description    (Table 0357)
  9377.  0    all mail messages in common memory
  9378.  1    allow write even if closed
  9379.  2    don't erase messages when mailbox closed
  9380.  4    (DV/X) append messages with like status and sender (stream-oriented
  9381.       mail)
  9382.  5    (DV/X) store mail in expanded memory (pool grows as needed)
  9383.  6    (DV/X) make mailbox into non-owned mailbox
  9384.  
  9385. Bitfields for DESQview keyboard object flags:
  9386. Bit(s)    Description    (Table 0358)
  9387.  5    exclusive input when keyboard in use for input
  9388. --------Q-1512--BH16-------------------------
  9389. INT 15 - DESQview v2.20+ - SEND MESSAGE - "GETFLAGS" - GET OBJECT FLAGS
  9390.     AH = 12h
  9391.     BH = 16h
  9392.     BL = object
  9393.         00h DWORD on top of stack
  9394.         mailbox, keyboard, or pointer only
  9395.         02h mailbox for task whose handle is on top of stack
  9396.         03h mailbox for current task
  9397.         04h keyboard for task whose handle is on top of stack
  9398.         05h keyboard for current task
  9399. Return: STACK: DWORD current control flags (see #0357,#0358)
  9400. Notes:    only available if the API level has been set to at least 2.20
  9401.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  9402.       "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
  9403. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=13h"READINTO",AH=12h/BH=15h
  9404. --------Q-1512--BH17-------------------------
  9405. INT 15 - DESQview v2.42-2.52 - BUG
  9406.     AH = 12h
  9407.     BH = 17h
  9408.     BL = object
  9409.         00h DWORD on top of stack
  9410.         mailbox, keyboard, or pointer only
  9411.         02h mailbox for task whose handle is on top of stack
  9412.         03h mailbox for current task
  9413.         04h keyboard for task whose handle is on top of stack
  9414.         05h keyboard for current task
  9415. Return: STACK popped if handle passed on stack
  9416. Notes:    due to a fencepost error, message 17h is accepted for mailboxes,
  9417.       keyboards, and pointers, but causes a random branch
  9418.     DESQview v2.50-2.52 are distributed as part of DESQview/X v1.02
  9419. --------Q-1512--BH80-------------------------
  9420. INT 15 - DESQview v2.50+ - SEND MESSAGE 00h WITH ERROR RECOVERY
  9421.     AH = 12h
  9422.     BH = 80h
  9423. Note:    this function is identical to AH=12h/BH=00h, except that DESQview will
  9424.       not pop up a "Programming Error" window, instead returning an error
  9425.       code in AL (see #0359)
  9426. SeeAlso: AH=12h/BH=00h
  9427.  
  9428. (Table 0359)
  9429. Values for DESQview error code:
  9430.  00h    no error
  9431.  01h    invalid values
  9432.  02h    alias invalid
  9433.  03h    handle valid but wrong type
  9434.  04h    invalid handle
  9435. --------Q-1512--BH81-------------------------
  9436. INT 15 - DESQview v2.50+ - SEND MESSAGE 01h WITH ERROR RECOVERY
  9437.     AH = 12h
  9438.     BH = 81h
  9439. Note:    this function is identical to AH=12h/BH=01h, except that DESQview will
  9440.       not pop up a "Programming Error" window, instead returning an error
  9441.       code in AL (see #0359)
  9442. SeeAlso: AH=12h/BH=01h
  9443. --------Q-1512--BH82-------------------------
  9444. INT 15 - DESQview v2.50+ - SEND MESSAGE 02h WITH ERROR RECOVERY
  9445.     AH = 12h
  9446.     BH = 82h
  9447. Note:    this function is identical to AH=12h/BH=02h, except that DESQview will
  9448.       not pop up a "Programming Error" window, instead returning an error
  9449.       code in AL (see #0359)
  9450. SeeAlso: AH=12h/BH=02h
  9451. --------Q-1512--BH83-------------------------
  9452. INT 15 - DESQview v2.50+ - SEND MESSAGE 03h WITH ERROR RECOVERY
  9453.     AH = 12h
  9454.     BH = 83h
  9455. Note:    this function is identical to AH=12h/BH=03h, except that DESQview will
  9456.       not pop up a "Programming Error" window, instead returning an error
  9457.       code in AL (see #0359)
  9458. SeeAlso: AH=12h/BH=03h,AH=12h/BX=0300h
  9459. --------Q-1512--BH84-------------------------
  9460. INT 15 - DESQview v2.50+ - SEND MESSAGE 04h WITH ERROR RECOVERY
  9461.     AH = 12h
  9462.     BH = 84h
  9463. Note:    this function is identical to AH=12h/BH=04h, except that DESQview will
  9464.       not pop up a "Programming Error" window, instead returning an error
  9465.       code in AL (see #0359)
  9466. SeeAlso: AH=12h/BH=04h,AH=12h/BX=0400h
  9467. --------Q-1512--BH85-------------------------
  9468. INT 15 - DESQview v2.50+ - SEND MESSAGE 05h WITH ERROR RECOVERY
  9469.     AH = 12h
  9470.     BH = 85h
  9471. Note:    this function is identical to AH=12h/BH=05h, except that DESQview will
  9472.       not pop up a "Programming Error" window, instead returning an error
  9473.       code in AL (see #0359)
  9474. SeeAlso: AH=12h/BH=05h
  9475. --------Q-1512--BH86-------------------------
  9476. INT 15 - DESQview v2.50+ - SEND MESSAGE 06h WITH ERROR RECOVERY
  9477.     AH = 12h
  9478.     BH = 86h
  9479. Note:    this function is identical to AH=12h/BH=06h, except that DESQview will
  9480.       not pop up a "Programming Error" window, instead returning an error
  9481.       code in AL (see #0359)
  9482. SeeAlso: AH=12h/BH=06h
  9483. --------Q-1512--BH87-------------------------
  9484. INT 15 - DESQview v2.50+ - SEND MESSAGE 07h WITH ERROR RECOVERY
  9485.     AH = 12h
  9486.     BH = 87h
  9487. Note:    this function is identical to AH=12h/BH=07h, except that DESQview will
  9488.       not pop up a "Programming Error" window, instead returning an error
  9489.       code in AL (see #0359)
  9490. SeeAlso: AH=12h/BH=07h
  9491. --------Q-1512--BH88-------------------------
  9492. INT 15 - DESQview v2.50+ - SEND MESSAGE 08h WITH ERROR RECOVERY
  9493.     AH = 12h
  9494.     BH = 88h
  9495. Note:    this function is identical to AH=12h/BH=08h, except that DESQview will
  9496.       not pop up a "Programming Error" window, instead returning an error
  9497.       code in AL (see #0359)
  9498. SeeAlso: AH=12h/BH=08h
  9499. --------Q-1512--BH89-------------------------
  9500. INT 15 - DESQview v2.50+ - SEND MESSAGE 09h WITH ERROR RECOVERY
  9501.     AH = 12h
  9502.     BH = 89h
  9503. Note:    this function is identical to AH=12h/BH=09h, except that DESQview will
  9504.       not pop up a "Programming Error" window, instead returning an error
  9505.       code in AL (see #0359)
  9506. SeeAlso: AH=12h/BH=09h
  9507. --------Q-1512--BH8A-------------------------
  9508. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ah WITH ERROR RECOVERY
  9509.     AH = 12h
  9510.     BH = 8Ah
  9511. Note:    this function is identical to AH=12h/BH=0Ah, except that DESQview will
  9512.       not pop up a "Programming Error" window, instead returning an error
  9513.       code in AL (see #0359)
  9514. SeeAlso: AH=12h/BH=0Ah
  9515. --------Q-1512--BH8B-------------------------
  9516. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Bh WITH ERROR RECOVERY
  9517.     AH = 12h
  9518.     BH = 8Bh
  9519. Note:    this function is identical to AH=12h/BH=0Bh, except that DESQview will
  9520.       not pop up a "Programming Error" window, instead returning an error
  9521.       code in AL (see #0359)
  9522. SeeAlso: AH=12h/BH=0Bh
  9523. --------Q-1512--BH8C-------------------------
  9524. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ch WITH ERROR RECOVERY
  9525.     AH = 12h
  9526.     BH = 8Ch
  9527. Note:    this function is identical to AH=12h/BH=0Ch, except that DESQview will
  9528.       not pop up a "Programming Error" window, instead returning an error
  9529.       code in AL (see #0359)
  9530. SeeAlso: AH=12h/BH=0Ch
  9531. --------Q-1512--BH8D-------------------------
  9532. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Dh WITH ERROR RECOVERY
  9533.     AH = 12h
  9534.     BH = 8Dh
  9535. Note:    this function is identical to AH=12h/BH=0Dh, except that DESQview will
  9536.       not pop up a "Programming Error" window, instead returning an error
  9537.       code in AL (see #0359)
  9538. SeeAlso: AH=12h/BH=0Dh
  9539. --------Q-1512--BH8E-------------------------
  9540. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Eh WITH ERROR RECOVERY
  9541.     AH = 12h
  9542.     BH = 8Eh
  9543. Note:    this function is identical to AH=12h/BH=0Eh, except that DESQview will
  9544.       not pop up a "Programming Error" window, instead returning an error
  9545.       code in AL (see #0359)
  9546. SeeAlso: AH=12h/BH=0Eh
  9547. --------Q-1512--BH8F-------------------------
  9548. INT 15 - DESQview v2.50+ - SEND MESSAGE 0Fh WITH ERROR RECOVERY
  9549.     AH = 12h
  9550.     BH = 8Fh
  9551. Note:    this function is identical to AH=12h/BH=0Fh, except that DESQview will
  9552.       not pop up a "Programming Error" window, instead returning an error
  9553.       code in AL (see #0359)
  9554. SeeAlso: AH=12h/BH=0Fh
  9555. --------Q-1512--BH90-------------------------
  9556. INT 15 - DESQview v2.50+ - SEND MESSAGE 10h WITH ERROR RECOVERY
  9557.     AH = 12h
  9558.     BH = 90h
  9559. Note:    this function is identical to AH=12h/BH=10h, except that DESQview will
  9560.       not pop up a "Programming Error" window, instead returning an error
  9561.       code in AL (see #0359)
  9562. SeeAlso: AH=12h/BH=10h
  9563. --------Q-1512--BH91-------------------------
  9564. INT 15 - DESQview v2.50+ - SEND MESSAGE 11h WITH ERROR RECOVERY
  9565.     AH = 12h
  9566.     BH = 91h
  9567. Note:    this function is identical to AH=12h/BH=11h, except that DESQview will
  9568.       not pop up a "Programming Error" window, instead returning an error
  9569.       code in AL (see #0359)
  9570. SeeAlso: AH=12h/BH=11h,AH=12h/BX=1100h
  9571. --------Q-1512--BH92-------------------------
  9572. INT 15 - DESQview v2.50+ - SEND MESSAGE 12h WITH ERROR RECOVERY
  9573.     AH = 12h
  9574.     BH = 92h
  9575. Note:    this function is identical to AH=12h/BH=12h, except that DESQview will
  9576.       not pop up a "Programming Error" window, instead returning an error
  9577.       code in AL (see #0359)
  9578. SeeAlso: AH=12h/BH=12h,AH=12h/BX=1200h
  9579. --------Q-1512--BH93-------------------------
  9580. INT 15 - DESQview v2.50+ - SEND MESSAGE 13h WITH ERROR RECOVERY
  9581.     AH = 12h
  9582.     BH = 93h
  9583. Note:    this function is identical to AH=12h/BH=13h, except that DESQview will
  9584.       not pop up a "Programming Error" window, instead returning an error
  9585.       code in AL (see #0359)
  9586. SeeAlso: AH=12h/BH=13h
  9587. --------Q-1512--BH94-------------------------
  9588. INT 15 - DESQview v2.50+ - SEND MESSAGE 14h WITH ERROR RECOVERY
  9589.     AH = 12h
  9590.     BH = 94h
  9591. Note:    this function is identical to AH=12h/BH=14h, except that DESQview will
  9592.       not pop up a "Programming Error" window, instead returning an error
  9593.       code in AL (see #0359)
  9594. SeeAlso: AH=12h/BH=14h
  9595. --------Q-1512--BH95-------------------------
  9596. INT 15 - DESQview v2.50+ - SEND MESSAGE 15h WITH ERROR RECOVERY
  9597.     AH = 12h
  9598.     BH = 95h
  9599. Note:    this function is identical to AH=12h/BH=15h, except that DESQview will
  9600.       not pop up a "Programming Error" window, instead returning an error
  9601.       code in AL (see #0359)
  9602. SeeAlso: AH=12h/BH=15h
  9603. --------Q-1512--BH96-------------------------
  9604. INT 15 - DESQview v2.50+ - SEND MESSAGE 16h WITH ERROR RECOVERY
  9605.     AH = 12h
  9606.     BH = 96h
  9607. Note:    this function is identical to AH=12h/BH=16h, except that DESQview will
  9608.       not pop up a "Programming Error" window, instead returning an error
  9609.       code in AL (see #0359)
  9610. SeeAlso: AH=12h/BH=16h
  9611. --------!---Section--------------------------
  9612.